docker私有仓库,使用自签名证书控制访问(有证书才可传输数据且数据加密),使用web界面浏览、删除镜像(centos8)(三)

服务器名称IP地址说明
服务器200192.168.1.200docker私有仓库
服务器210192.168.1.210docker客户端
软件版本号查询命令
dockerDocker version 18.09.1, build 4c52b90docker -v
centos8CentOS 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创建自签名证书存放目录/etc/docker/certs,创建证书(需要输入的内容可自定义,但是域名必须和命令行的文件名保持一致,如下图)。

mkdir -p  /etc/docker/certs
openssl req -newkey rsa:4096 -nodes -sha256 -x509 -days 365 -keyout /etc/docker/certs/yuming.key  -out /etc/docker/certs/yuming.crt
ls   /etc/docker/certs

在这里插入图片描述

3、私有仓库服务器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 \
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:设置私钥的位置。

三、客户端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-certs-hello-world

3、客户端210上传创建新标签的镜像至私有仓库。

docker  push  192.168.1.200:5000/client210-certs-hello-world

4、客户端210测试下载镜像过程:查看、删除docker客户端服务器210本地镜像,确认本地已无镜像,下载私有仓库服务器200镜像,查看下载到本地的镜像。

docker images
docker rmi  192.168.1.200:5000/client210-certs-hello-world
docker images
docker pull 192.168.1.200:5000/client210-certs-hello-world
docker images

在这里插入图片描述

四、使用web界面浏览、删除docker私有仓库镜像

1、私有仓库服务器200停止并删除已创建的web界面管理容器registry_web。

docker stop registry-web
docker rm registry-web

2、私有仓库服务器200,使用证书验证方式创建启动容器registry-web。参数URL需以https开头,并设置信任任何SSL的连接为true

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_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_TRUST_ANY_SSL,设置信任任何SSL的连接

3、局域网内其他主机打开浏览器,输入网址http://192.168.1.200:8080,访问私有仓库镜像如下图,还可以删除镜像。
在这里插入图片描述
在这里插入图片描述

4、浏览器,输入网址http://192.168.1.200:8080,访问私有仓库镜像报错“
I/O error on GET request for “http://192.168.1.200:5000/v2/_catalog?n=100”:Unexpected end of file from server; nested exception is java.net.SocketException: Unexpected end of file from server”。原因:私有仓库服务器200,使用证书验证方式创建启动容器registry-web时,参数URL没有以https开头。

在这里插入图片描述

5、浏览器,输入网址http://192.168.1.200:8080,访问私有仓库镜像报错“
I/O error on GET request for “https://192.168.1.200:5000/v2/_catalog?n=100”:java.security.cert.CertificateException: No subject alternative names present; nested exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present”。原因:私有仓库服务器200,使用证书验证方式创建启动容器registry-web时,参数没有设置信任任何SSL的连接为true。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 是一款轻量级的容器虚拟化引擎,已经成为了现代云计算和容器化技术的标准。Docker 镜像Docker 容器的基础,它包含了操作系统、应用程序等一切运行所需的文件和设置,可以快速地创建、分发、启动多个相同的容器。 私有 Docker 镜像仓库是指企业或个人拥有的 Docker 镜像仓库,对外不开放。相比于公共 Docker 镜像仓库私有 Docker 镜像仓库更加灵活和安全,可以满足企业和个人的需求。 私有 Docker 镜像仓库可以满足企业安全要求,保护企业的私有代码和数据。当企业需要部署新的应用程序、微服务等时,可以在内网中构建自己的 Docker 镜像,并将它们保存在私有 Docker 镜像仓库中,以便在需要时轻松地部署和管理。 此外,私有 Docker 镜像仓库还可以提高企业部署效率,缩短应用程序上线时间。企业可以使用私有 Docker 镜像仓库在内部构建和部署应用程序,无需等待公共 Docker 镜像仓库上的更新版本,而且私有 Docker 镜像仓库可以借助镜像缓存等技术,提高 Docker 镜像的下载速度。 使用私有 Docker 镜像仓库还可以降低企业成本。私有 Docker 镜像仓库可以在企业内部进行部署和管理,无需支付公共 Docker 镜像仓库的服务费用。同时,私有 Docker 镜像仓库可以根据企业需要进行定制和调整,可以更加符合企业的实际需求。 总之,私有 Docker 镜像仓库是企业部署应用程序和微服务的理想选择。它可以提高企业安全性和效率,降低成本,并且可以更好地满足企业的实际需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值