Private Docker Registry
建立一個自己的docker registry,這樣就不怕開發時,需要不斷將docker image推到docker hub造成超過儲存空間限制的問題。
Run a local registry
$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
Insecure registry
docker預設使用TLS連線到registry,所以必須透過設定來指定docker使用HTTP連線
在client端的/etc/docker/daemon.json新增設定如下:
{
"insecure-registries" : ["<registry_domain>:<port>"]
}
重新啟動docker
$ sudo systemctl restart docker
設定後docker連線該registry時會執行以下動作
- 嘗試使用HTTPS
- 如果HTTPS可以連線到,但certificate有問題,則會直接忽略錯誤
- 如果HTTPS不能連線到,嘗試使用HTTP
Push to private docker registry
將需要推的docker image加上包含private registry domain的tag:
$ docker tag <original_image_name> <registry_domain>:<port>/<image_name>:<tag>
$ docker push <registry_domain>:<port>/<image_name>:<tag>
Pull from private docker registry
$ docker pull <registry_domain>:<port>/<image_name>:<tag>
Insecure Registry in GitLab Runner
直接使用Docker socket binding(mount /var/run/docker.sock
)並在Host中的 /etc/docker/daemon.json
新增 insecure-registries
即可
Insecure Registry in minikube
P.S: minikube的網路與外面互相隔離,故無法存取自己在外面建立的private registry, 只能enable minikube registry詳情參考官網
在minikube start時,需多加參數 --insecure-registry
,因為minikube預設cluster IP是在10.0.0.1,所以可透過以下指定:
$ minikube start --insecure-registry "10.0.0.0/24"
Insecure Registry in K8S
必須在每個node中的 /etc/docker/daemon.json
新增 insecure-registries
即可。