首先,我们来准备一下搭建私有仓库所需要的信息。
docker pull registry
紧接着,registry需要https运行环境,所以来生成我们自己的证书(简单说明一下,目前的registry版本是2,之前的1是支持非ssl的,docker在0.9以下。) 先交代一下环境:物理机是win10,使用hyper-v 虚拟一个cenots(ip:192.168.50.2)作为我们的docker host。使用内部网络,物理机共享本地网络方式连接上网。私有仓库使用域名local.registry.docker.com,端口:3075。
mkdir certs
mkdir auth
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/local.registry.docker.com.key -x509 -days 365 -out /certs/local.registry.docker.com.crt
docker run --entrypoint htpasswd registry:2 -Bbn admin admin > /auth/htpasswd
网络环境还不错的情况下,这个时候pull registry应该也已经完成了。那...... 然后,把我们的 私有仓库跑起来先 docker run -dit -p 3075:5000 --restart=always --name hub \
-v /auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v /certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/local.registry.docker.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/local.registry.docker.com.key \
registry:2
解释一下参数: -d:表示容器后台运行 -p:端口映射 --restart=always:可以理解为开机启动。开机:就是启动docker客户端拉。 --name registry:给容器取一个名字,方便识别和记忆 -v:挂在本地文件到容器中。命令格式:hostdir:cdir[:rw|ro] 主机目录:容器目录[:读写权限] -v pwd /auth:/auth:挂在本地的密码文件夹 -v pwd /certs:/certs:挂在本地的ssl证书文件夹
-e:设置环境变量参数 -e REGISTRY_AUTH:验证方式 -e REGISTRY_AUTH_HTPASSWD_REALM:验证域名 -e REGISTRY_AUTH_HTPASSWD_PATH:密码文件路径 -e REGISTRY_HTTP_TLS_CERTIFICATE:ssl证书文件路径 -e REGISTRY_HTTP_TLS_KEY:ssl证书文件路径 最后的registry则是镜像的名字了。具体参数什么的,可以参考registry官方文档地址 centos docker客户端配置私有仓库信任 |