2019独角兽企业重金招聘Python工程师标准>>>
在内网搭建docker registry并使用密码鉴权的方法
建立日期:2016年5月2日。
最后编辑:2016年6月8日。
1 说明。
执行docker run registry:2命令的设备称为服务端。执行docker pull或docker push命令,向服务端推送或拉取镜像的设备称为客户端。
2 服务端操作。
2.1 安装docker和docker-registry:2,启动docker守护进程。
(略)
2.2 创建工作目录。
mkdir -p /data/DockerRegistry/{Data,Cert,Auth}
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 once
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:2
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 [email protected] 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