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/auth目录,存放访问docker私有仓库的用户名和密码。可设置多个用户,追加内容即可。

mkdir -p  /etc/docker/auth
docker run  --entrypoint htpasswd registry:latest -Bbn user01 123456 > /etc/docker/auth/htpasswd
docker run  --entrypoint htpasswd registry:latest -Bbn user02 123456 >> /etc/docker/auth/htpasswd
cat  /etc/docker/auth/htpasswd

参数说明:
--entrypoint string:覆盖镜像默认的entrypoint。
-B:强制密码加密
-b:使用命令行中的密码而不是提示输入密码
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上
在这里插入图片描述

3、私有仓库服务器200,设置允许删除参数为true,使用基本身份验证方式创建容器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/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/auth目录至容器/auth目录。
-e REGISTRY_AUTH:设置环境变量告诉容器密码文件名。
-e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm”:设置身份验证的领域。
-e REGISTRY_AUTH_HTPASSWD_PATH:设置环境变量告诉容器存放账户、密码的位置。

三、客户端210测试上传、下载镜像

1、客户端210为hello-world镜像创建新标签,当标签的第一部分是主机名和端口时,上传镜像时docker会将其解释为镜像仓库的位置。

docker images
docker  tag   hello-world:latest  192.168.1.200:5000/client210-user01-hello-world

2、docker客户端210上传创建新标签的镜像至私有仓库服务器200。

docker  push  192.168.1.200:5000/client210-user01-hello-world
  • docker客户端210上传镜像至私有仓库服务器200报错问题:“no basic auth credentials”,说明docker客户端210账户未登陆。

问题解决方法:登陆账户后即可上传镜像。

docker login 192.168.1.200:5000
docker  push  192.168.1.200:5000/client210-user01-hello-world

在这里插入图片描述
3、测试下载镜像过程:查看、删除docker客户端服务器210本地镜像,确认本地已无镜像,下载私有仓库服务器200镜像,查看下载到本地的镜像。

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

在这里插入图片描述

4、清理登陆信息,删除/root/.docker/config.json身份验证信息。运行如下docker登出命令即可。

docker logout 192.168.1.200:5000

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

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

docker stop registry-web
docker rm registry-web

2、私有仓库200服务器使用账号user01登录,查看登录后身份验证信息。

docker login 192.168.1.200:5000
find  / -name config.json
cat /root/.docker/config.json

3、私有仓库服务器200,使用基本身份验证方式创建启动容器registry-web。参数REGISTRY_BASIC_AUTH的值即为上一步查看的身份验证信息中的auth的值,如下图所示。

docker run -itd -p 8080:8080 --restart=always --name registry_web --link my-registry \
-e REGISTRY_URL=http://192.168.1.200:5000/v2 \
-e REGISTRY_NAME=192.168.1.200:5000 \
-e REGISTRY_READONLY=false \
-e REGISTRY_BASIC_AUTH="dXNlcjAxOjEyMzQ1Ng=="  \
hyper/docker-registry-web:latest

说明
-d,后台运行容器。
-p 8080:8080,映射容器8080端口至宿主机8080端口。
- - restart always,设置重新启动策略,在docker重新启动时自动重新启动容器my-registry。
- -name my-registry 给容器命名。
--link ,设置连接的仓库。
-e REGISTRY_URL,设置仓库URL。
-e REGISTRY_NAME,设置仓库主机。
-e REGISTRY_READONLY ,设置web界面是否显示读写、删除按钮。
-e REGISTRY_BASIC_AUTH,设置web界面基本身份验证信息。

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Docker镜像上传到私有仓库需要按照以下步骤进行操作: 1. 登录私有仓库使用终端或命令行界面登录私有仓库。这通常涉及使用"docker login"命令,并提供仓库的URL、用户名和密码。 2. 构建Docker镜像:在本地环境中构建Docker镜像。可以使用Dockerfile来定义构建规则,并使用"docker build"命令进行构建。构建完成后,会生成对应的镜像ID。 3. 为镜像添加标签:为将要上传的镜像添加标签,以便将其与私有仓库中的目标仓库进行关联。使用"docker tag"命令,将本地镜像ID与目标仓库名称和版本进行关联。 4. 上传镜像私有仓库使用"docker push"命令将带有标签的镜像上传到私有仓库。这将使用之前的登录凭据,将镜像上传到您指定的目标仓库。 5. 验证镜像上传:登录私有仓库,查看上传的镜像是否出现在仓库中。可以使用仓库Web界面或相应的命令行工具进行验证需要注意以下几点: - 确保您具有上传镜像的权限,这包括正确的用户名和密码,以及私有仓库访问权限。 - 镜像的标签需要与目标仓库名称和版本相关联,以便在上传时进行正确的识别和归类。 - 上传镜像的时间取决于网络连接的速度和镜像的大小。较大的镜像可能需要更长的时间上传。 通过按照上述步骤操作,您应该能够将Docker镜像成功上传到私有仓库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值