在內網搭建docker registry並使用密碼鑑權的方法node
創建日期:2016年5月2日。
最後編輯:2016年6月8日。docker
1 說明。
執行docker run registry:2命令的設備稱爲服務端。執行docker pull或docker push命令,向服務端推送或拉取鏡像的設備稱爲客戶端。dom
2 服務端操做。curl
2.1 安裝docker和docker-registry:2,啓動docker守護進程。
(略)url
2.2 建立工做目錄。
mkdir -p /data/DockerRegistry/{Data,Cert,Auth}rest
2.3 生成TLS使用的自簽名證書。
cd /data/DockerRegistry/Cert
domain=MyDockerRegistry.com
openssl req -nodes \
-subj "/C=CN/ST=Guangdong/L=Shenzhen/CN=$domain" \
-newkey rsa:4096 -keyout $domain.key -out $domain.csr
openssl x509 -req -days 3650 -in $domain.csr -signkey $domain.key -out $domain.crt進程
2.4 生成鑑權使用的密碼文件。
docker run --name once --entrypoint=htpasswd registry:2 -Bbn TestUser TestPassword > /Data/Registry/Auth/Htpasswd
docker rm oncessl
2.5 啓動docker registry:2。
docker run -d -p 5000:5000 --restart=always \
--volume=/data/DockerRegistry/Data:/var/lib/registry \
--volume=/data/DockerRegistry/Cert:/Cert \
--volume=/data/DockerRegistry/Auth:/Auth \
--env="REGISTRY_AUTH=htpasswd" \
--env="REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
--env="REGISTRY_AUTH_HTPASSWD_PATH=/Auth/Htpasswd" \
--env="REGISTRY_HTTP_TLS_CERTIFICATE=/Cert/MyDockerRegistry.com.crt" \
--env="REGISTRY_HTTP_TLS_KEY=/Cert/MyDockerRegistry.com.key" \
--name=registry \
registry:2openssl
3 客戶端操做。域名
3.1 配置host文件,讓客戶端能夠經過域名訪問服務端。
echo "\n127.0.0.1 MyDockerRegistry.com\n" >> /etc/hosts
3.2 安裝服務端證書。
sudo mkdir -p /etc/docker/certs.d/MyDockerRegistry.com
sudo scp SERVER_IP:/data/DockerRegistry/Cert/MyDockerRegistry.com.cert /etc/docker/certs.d/MyDockerRegistry.com/ca.crt
3.3 啓動docker守護進程。
3.4 在docker registry客戶端設備上登陸docker registry。
docker login -u TestUser -p TestPassword -e foo@bar.com MyDockerRegistry.com:5000
3.5 查看docker registry中的鏡像。 sudo curl https://MyDockerRegistry.com:5000/v2/_catalog -u TestUser:TestPassword --cacert /etc/docker/certs.d/MyDockerRegistry.com:5000/ca.crt