文章目录
服务器名称 | IP地址 | 说明 |
---|---|---|
服务器200 | 192.168.1.200 | docker私有仓库 |
服务器210 | 192.168.1.210 | docker客户端 |
软件 | 版本号 | 查询命令 |
---|---|---|
docker | Docker version 18.09.1, build 4c52b90 | docker -v |
centos8 | CentOS Linux release 8.0.1905 (Core) | cat /etc/redhat-release |
一、服务器安装docker,且已下载仓库镜像
参照博客:https://blog.csdn.net/renfeigui0/article/details/103755823
二、私有仓库服务器200使用自签名证书和身份验证方式创建容器
1、私有仓库服务器200停止并删除已创建的仓库容器my-registry。
docker stop my-registry
docker rm my-registry
2、私有仓库服务器200使用自签名证书和身份验证方式创建容器my-registry。
docker run -d -p 5000:5000 --restart=always --name my-registry \
-v /registry:/registry \
-e REGISTRY_STORAGE_DELETE_ENABLED=true \
-e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
-v /etc/docker/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/yuming.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/yuming.key \
-v /etc/docker/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry:latest
说明
-d,后台运行容器
-p 5000:5000 ,映射容器5000端口至宿主机5000端口。
- - restart always,设置重新启动策略,在docker重新启动时自动重新启动容器my-registry。
- -name my-registry,给容器命名。
-v /registry:/registry,把docker容器中/registry目录的数据加载到宿主机的/registry目录,宿主机的/registry目录如果不存在会自动创建。目的是为了防止docker私有仓库这个容器被删除时,仓库里的镜像也会被删除。宿主机查看到的私有仓库镜像就在这个目录中。
-e REGISTRY_STORAGE_DELETE_ENABLED,设置是否允许删除仓库存储的镜像。
-e REGISTRY_HTTP_ADDR=0.0.0.0:5000,设置镜像仓库地址。
-v 本机目录/etc/docker/certs挂载至容器的目录/certs。
-e REGISTRY_HTTP_TLS_CERTIFICATE:设置证书的位置。
-e REGISTRY_HTTP_TLS_KEY:设置私钥的位置。
-v 挂载本机的/etc/docker/auth目录至容器/auth目录。
-e REGISTRY_AUTH:设置环境变量告诉容器密码文件名。
-e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm”:设置身份验证的领域。
-e REGISTRY_AUTH_HTPASSWD_PATH:设置环境变量告诉容器存放账户、密码的位置。
三、客户端210测试上传、下载镜像
1、客户端210复制服务器200的certs证书到新建的docker数据目录中。
mkdir -p /etc/docker/certs.d/yuming/
scp root@192.168.1.200:/etc/docker/certs/yuming.crt /etc/docker/certs.d/yuming/ca.crt
2、客户端210为hello-world镜像创建新标签,当标签的第一部分是主机名和端口时,上传镜像时docker会将其解释为镜像仓库的位置。
docker images
docker tag hello-world:latest 192.168.1.200:5000/client210-crt-user-hello-world
3、客户端210上传创建新标签的镜像至私有仓库。
docker push 192.168.1.200:5000/client210-crt-user-hello-world
4、客户端210测试下载镜像过程:查看、删除docker客户端服务器210本地镜像,确认本地已无镜像,下载私有仓库服务器200镜像,查看下载到本地的镜像。
docker images
docker rmi 192.168.1.200:5000/client210-crt-user-hello-world
docker images
docker pull 192.168.1.200:5000/client210-crt-user-hello-world
docker images
四、使用web界面浏览、删除docker私有仓库镜像
1、私有仓库服务器200停止并删除已创建的web界面管理容器registry_web。
docker stop registry-web
docker rm registry-web
2、私有仓库服务器200,创建启动容器registry-web,。
docker run -itd -p 8080:8080 --name registry_web --link my-registry \
-e REGISTRY_URL=https://192.168.1.200:5000/v2 \
-e REGISTRY_NAME=192.168.1.200:5000 \
-e REGISTRY_READONLY=false \
-e REGISTRY_BASIC_AUTH="dXNlcjAxOjEyMzQ1Ng==" \
-e REGISTRY_TRUST_ANY_SSL=true \
hyper/docker-registry-web:latest
说明
-d,后台运行容器。
-p 8080:8080,映射容器8080端口至宿主机8080端口。
- - restart always,设置重新启动策略,在docker重新启动时自动重新启动容器my-registry。
- -name my-registry 给容器命名。
--link ,设置连接的仓库。
-e REGISTRY_URL,设置仓库URL,如果使用证书创建容器,仓库URL以https开头。
-e REGISTRY_NAME,设置仓库主机。
-e REGISTRY_READONLY ,设置web界面是否显示读写、删除按钮。
-e REGISTRY_BASIC_AUTH,设置web界面基本身份验证信息。
-e REGISTRY_TRUST_ANY_SSL,设置信任任何SSL的连接。
3、局域网内其他主机打开浏览器,输入网址http://192.168.1.200:8080,访问私有仓库镜像如下图,还可以删除镜像。