一、搭建倉庫
下載鏡像
docker pull registry
創建目錄
mkdir -p /data/docker_reg
運行容器
docker run -d -p 2333:5000 --name=local_reg --restart=always --privileged=true -v /data/docker_reg:/var/lib/registry docker.io/registry
查看docker服務
service docker status
vi /usr/lib/systemd/system/docker.service
在ExecStart節點裏增加
--insecure-registry 127.16.0.8:2333 \
重啓服務
systemctl daemon-reload
service docker restart
停止的容器再拉起來一下
docker start local_reg
docker pull docker.io/hello-world
docker tag docker.io/hello-world 172.16.0.8:2333/hello-world
docker push 172.16.0.8:2333/hello-world
正常的話會顯示
The push refers to a repository [172.16.0.8:2333/hello-world]
af0b15c8625b: Pushed
latest: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
二、創建ca證書以支持其他服務器的倉庫訪問
倉庫所在服務器的配置
mkdir -r /data/certs
cd /data/certs
openssl req -newkey rsa:2048 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
這裏創建時其他可以爲空,但是server name必須要和後面使用的hostname對應
倉庫服務重新起來
docker rm -f local_reg
docker run -d -p 2333:5000 --name=local_reg --restart=always --privileged=true -v /data/docker_reg:/var/lib/registry -v /data/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/ca.crt -e REGISTRY_HTTP_TLS_KEY=/certs/ca.key docker.io/registry
重啓下docker服務
service docker restart
客戶機的配置
修改host文件
vi /etc/hosts
host名稱和ca證書對應
172.16.0.8 docker-reg-host
創建證書目錄
mkdir -p /etc/docker/certs.d/docker-reg-host:2333/
將倉庫服務器生成的ca.crt拷貝到這臺客戶機的/etc/docker/certs.d/docker-reg-host:2333/下
重啓下docker服務
service docker restart
修改下鏡像的名稱就可以push了
docker tag docker.io/hello-world docker-reg-host:2333/hello-world
docker push docker-reg-host:2333/hello-world
pull也可以正常使用了
docker pull docker-reg-host:2333/hello-world