docker搭建本地私有仓库(centos8)(一)

文章目录

    • 一、服务器200、210安装docker
    • 二、服务器200搭建docker私有仓库(数据传输不加密,不安全,任何主机都可访问)
    • 三、docker客户端210测试上传、下载私有仓库镜像
    • 四、使用web界面浏览、删除docker私有仓库镜像
    • 五、使用身份验证控制访问仓库镜像(需登录账号验证身份才可上传下载镜像),使用web界面浏览、删除镜像
    • 六、使用证书控制访问仓库镜像(有证书才可传输数据且数据加密),使用web界面浏览、删除镜像
    • 七、使用证书和身份验证控制访问仓库镜像(传输数据加密和用户验证),使用web界面浏览、删除镜像

服务器名称 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

一、服务器200、210安装docker

参考博客(文章目录一):https://blog.csdn.net/renfeigui0/article/details/103314065

二、服务器200搭建docker私有仓库(数据传输不加密,不安全,任何主机都可访问)

1、在服务器200上拉取仓库镜像registry。

 docker pull registry 

2、在服务器200上运行docker私有仓库镜像,创建容器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  \
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,设置镜像仓库地址。

3、查看私有仓库镜像,暂时没有镜像。

yum  install  -y    tree
tree  /registry/

ls /registry/docker/registry/v2/repositories

curl  http://192.168.1.200:5000/v2/_catalog

docker搭建本地私有仓库(centos8)(一)_第1张图片

三、docker客户端210测试上传、下载私有仓库镜像

1、docker客户端210下载官网hello-world镜像。

docker pull hello-world

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

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

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

docker  push  192.168.1.200:5000/client210-hello-world
  • docker客户端210上传镜像至私有仓库服务器200报错问题一:报错“no route to host”
    docker搭建本地私有仓库(centos8)(一)_第2张图片
    问题一解决方法:私有仓库服务器200设置防火墙(解决方法三)
    参照博客(解决方法三):https://blog.csdn.net/renfeigui0/article/details/103843538

  • docker客户端服务器210上传镜像至私有仓库服务器200报错问题二:报错“ http: server gave HTTP response to HTTPS client”

问题二解决方法:docker客户端服务器210,编辑配置文件/etc/docker/daemon.json,增加内容“私有仓库IP:端口号”,保存配置文件,重启docker服务。

vi  /etc/docker/daemon.json
{ 
    "insecure-registries": ["192.168.1.200:5000"]
}
systemctl   restart  docker

docker搭建本地私有仓库(centos8)(一)_第3张图片

4、上传成功后,查看私有仓库镜像,已经可以看到我们上传的镜像了。

curl  http://192.168.1.200:5000/v2/_catalog

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

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

docker搭建本地私有仓库(centos8)(一)_第4张图片

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

1、私有仓库服务器200下载web界面管理工具docker-registry-web镜像。

docker pull hyper/docker-registry-web

2、设置私有仓库只读参数为false,创建启动容器registry-web。

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 \
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 ,设置仓库是否允许读写、删除。

3、防火墙开放端口8080。

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=8080/tcp 

4、docker私有仓库服务器200,编辑配置文件/etc/docker/daemon.json,增加内容“私有仓库IP:端口号”,保存配置文件,重启docker服务。

vi  /etc/docker/daemon.json
{ 
    "insecure-registries": ["192.168.1.200:5000"]
}
systemctl   restart  docker

5、局域网内其他主机打开浏览器,输入网址http://192.168.1.200:8080,访问私有仓库镜像如下图,还可以删除镜像。
docker搭建本地私有仓库(centos8)(一)_第5张图片

docker搭建本地私有仓库(centos8)(一)_第6张图片

五、使用身份验证控制访问仓库镜像(需登录账号验证身份才可上传下载镜像),使用web界面浏览、删除镜像

参照博客:https://blog.csdn.net/renfeigui0/article/details/103847409

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

参照博客:https://blog.csdn.net/renfeigui0/article/details/104037381

七、使用证书和身份验证控制访问仓库镜像(传输数据加密和用户验证),使用web界面浏览、删除镜像

参照博客:https://blog.csdn.net/renfeigui0/article/details/103952313

你可能感兴趣的:(docker)