如何在CentOS 7.x / RHEL 7.x上搭建Docker Private Registry(Docker私有仓库)
原作者:Pradeep Kumar 转载来源:https://www.linuxtechi.com/setup-docker-private-registry-centos-7-rhel-7/
如何在CentOS 7.x / RHEL 7.x上设置Docker Private Registry
每当我们在CentOS或RHEL服务器上安装Docker时,Docker都会启用公共仓库,因此当我们运行“ docker pull ”或“ docker search ”命令时,它将转到Docker公共仓库(Docker Hub)并将获取所需的容器映像。但是,当您在组织中使用Docker时,不想从公共仓库中获取Docker容器图像,为了最佳实践,我们应该拥有自己的私有Docker仓库或存储库。Docker Registry或存储库是存储Docker容器映像的地方。
在本文中,我将演示如何在CentOS 7.x / RHEL 7.x上设置我们自己的Docker私有仓库。我将使用三个CentOS 7.x服务器并假设已经安装了docker,并且它的服务已在所有三台服务器上启动并运行。以下是我的三台服务器的详细信息:
- docker-repo.example.com {192.168.0.60} - >它将充当我的Docker私有Registry Server
- dkengine1.example.com {192.168.0.70} - >在此服务器上Docker管理员和开发人员将使用dockerfile或compose创建自己的容器映像,然后他们将这些映像上传到他们自己的docker私有仓库服务器(docker-repo.example.com)与docker push命令
- dkengine2.example.com {192.168.0.80} - >在此服务器上,我们将使用' docker pull '命令从我们自己的私有仓库服务器下载docker容器映像
注意:如果未配置DNS服务器,请更新/etc/hosts文件,以便可以使用各自的主机名或DNS名称访问服务器。
192.168.0.60 docker-repo.example.com docker-repo
192.168.0.70 dkengine1.example.com dkengine1
192.168.0.80 dkengine2.example.com dkengine2
按照上面讨论的方案执行以下步骤来设置我们自己的Docker Private Registry
步骤1:在您的私有仓库服务器上下载并启动Registry容器
登录到您要配置为Docker Private Registry Server的服务器,在我的例子中是“docker-repo.example.com”。我假设已经安装了Docker软件包并且其服务已启动并正在运行。如果未安装Docker,请参阅如何在CentOS 7.x上安装Docker。
下一个任务是启动程序或脚本,该程序或脚本将配置并使您的服务器成为Registry Server。该程序或脚本是通过运行docker仓库容器启动的。让我们首先使用 docker pull 命令下载仓库容器
$ sudo docker pull registry
下载映像后,确认在启动 registry 容器映像时将执行哪些命令。
$ sudo docker history registry
现在使用下面的命令启动仓库容器
[root@docker-repo ~]# docker run -dit -p 5000:5000 --name registry registry
bf8e703b0149211bb923beeb042f8e656bf407b21646f101eb58e0acd4409c24
[root@docker-repo ~]#
上面的命令将启动具有名称 registry 的仓库容器,并且我们还设置了端口转发规则,以便如果任何请求在5000端口上发送到“ docker-repo.example.com ”,则请求将被重定向到5000端口上的注册表容器。
[root@docker-repo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf8e703b0149 registry "/entrypoint.sh /e..." 5 minutes ago Up 5 minutes 0.0.0.0:5000->5000/tcp registry
[root@docker-repo ~]#
注意:如果您的专用注册表服务器上启用了防火墙,请使用以下命令打开80/5000端口
[root@docker-repo ~]# firewall-cmd --permanent --add-port=80/tcp
success
[root@docker-repo ~]# firewall-cmd --permanent --add-port=5000/tcp
success
[root@docker-repo ~]# firewall-cmd --reload
success
[root@docker-repo ~]#
步骤2:创建Docker Container Image并将其上载到Private Registry Server
假设我在' dkengine1.example.com ' 上使用Dockerfile构建了Ubuntu 16.04 docker容器映像。如果您不熟悉dockerfile,请参阅以下内容:如何使用Dockerfile构建Docker容器映像。
我们可以使用“docker push”命令将容器映像上传到 registry 服务器,但在开始上传之前,我们进行了两次更改:
- 确保使用“ servername:portnumber/imagename:tags ” 格式创建映像名称。默认情况下,docker pull命令会尝试在公共注册表中上传图像,如果我们使用上面提到的格式创建图像名称,则docker pull命令会将其上传到图像名称中提到的服务器。所以在我的情况下服务器名称将是“docker-repo.example.com”
要使用docker tag命令更改docker image的名称,示例如下所示
[root@dkengine1 ~]# docker tag ubuntu:16.04 docker-repo.example.com:5000/ubuntu:16.04
[root@dkengine1 ~]#
- 将docker push https连接更改为http。每当我们使用'docker push'命令时,它将尝试与注册表服务器建立https连接,但是在私有注册表服务器设置的情况下,它只接受来自客户端的http连接(dkengine1.example.com)
编辑 file “/usr/lib/systemd/system/docker.service” 并改变参数
ExecStart=/usr/bin/dockerd
改为:
ExecStart=/usr/bin/dockerd –insecure-registry docker-repo.example.com:5000
重新加载守护程序服务并重新启动Docker服务
[root@dkengine1 ~]#systemctl daemon-reload
[root@dkengine1 ~]#systemctl restart docker
[root@dkengine1 ~]#
现在使用under命令将映像上载到私有仓库服务器
[root@dkengine1 ~]# docker push docker-repo.example.com:5000/ubuntu:16.04
The push refers to a repository [docker-repo.example.com:5000/ubuntu]
56827159aa8b: Pushed
440e02c3dcde: Pushed
29660d0e5bb2: Pushed
85782553e37a: Pushed
745f5be9952c: Pushed
16.04: digest: sha256:6b079ae764a6affcb632231349d4a5e1b084bece8c46883c099863ee2aeb5cf8 size: 1357
[root@dkengine1 ~]#
步骤3:从Private Registry Server下载Docker Container映像
登录到'dkengine2.example.com'服务器并使用'docker pull'命令从您的私人仓库服务器下载容器图像。默认情况下,docker pull命令还使https与仓库服务器连接,但我们的私有仓库仅接受http连接。
编辑文件“/usr/lib/systemd/system/docker.service”并更改参数
ExecStart=/usr/bin/dockerd
改为:
ExecStart=/usr/bin/dockerd –insecure-registry docker-repo.example.com:5000
重新加载守护程序服务并重新启动docker服务
[root@dkengine2 ~]# systemctl daemon-reload ; systemctl restart docker
[root@dkengine2 ~]#
现在使用 docker pull 命令下载Container图像
[root@dkengine2 ~]# docker pull docker-repo.example.com:5000/ubuntu:16.04
16.04: Pulling from ubuntu
fec6b243e075: Pull complete
190e0e9a3e79: Pull complete
0d79cf192e4c: Pull complete
38398c307b51: Pull complete
356665655a72: Pull complete
Digest: sha256:6b079ae764a6affcb632231349d4a5e1b084bece8c46883c099863ee2aeb5cf8
Status: Downloaded newer image for docker-repo.example.com:5000/ubuntu:16.04
[root@dkengine2 ~]#
现在使用' docker images '命令验证图像
[root@dkengine2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-repo.example.com:5000/ubuntu 16.04 0ef2e08ed3fa 3 weeks ago 130 MB
[root@dkengine2 ~]#
这一切都来自这篇文章。我希望你们知道如何设置自己的Docker Private Registry Server。如果你喜欢这篇文章,请不要犹豫分享。
如何在CentOS 7.x / RHEL 7.x上搭建Docker Private Registry(Docker私有仓库)相关推荐
- centos+7虚拟机web服务器,CentOS7上搭建WEB服务器
mysql 安装 直接yum install mysql-server是不可以的 1 wget http://repo.mysql.com/mysql-community-release-el7-5. ...
- DNF包管理命令在CentOS 8和RHEL 8上的使用
DNF包管理命令在CentOS 8和RHEL 8上的使用 DNF意思是" Dandified Yum". 这是下一代的yum软件包管理器(Yum的派生).DNF命令使用libsol ...
- linux(centos)基于docker搭建的oracle服务器,并上传到私有仓库
安装docker 首先通过上面的步骤安装linux系统: 更新yum -y update : 安装yum install docker -y: 配置镜像加速器vi /etc/docker/daemon ...
- redhat linux系统补丁,如何在CentOS和RHEL系统上安装或自动更新安全补丁
在 Linux 系统上,其中一个最重要的需求就是保持定期更新最新的安全补丁,或者为相应的 Linux 版本更新可用的安全补丁. 在之前的文章中,我们分享了如何在 Debian/Ubuntu 上配置自动 ...
- 如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置
如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置 ... [复制链接] 发表于 2014-9-16 18:50 | 来自 51CTO网页 [只看他] 楼主 步骤一,开 ...
- edxp显示未安装_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器
在 Centos 8 和 RHEL 8 系统中,默认未安装 VNC 服务器,它需要手动安装.在本文中,我们将通过简单的分步指南,介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器. ...
- linux服务器上svn的log_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器 | Linux 中国...
在 Centos 8 和 RHEL 8 系统中,默认未安装 VNC 服务器,它需要手动安装.在本文中,我们将通过简单的分步指南,介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器. ...
- 查看vnc端口_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器
在 Centos 8 和 RHEL 8 系统中,默认未安装 VNC 服务器,它需要手动安装.在本文中,我们将通过简单的分步指南,介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器. ...
- Linux有问必答:如何在CentOS或者RHEL上启用Nux Dextop仓库
Linux有问必答:如何在CentOS或者RHEL上启用Nux Dextop仓库 问题: 我想要安装一个在Nux Dextop仓库的RPM包.我该如何在CentOS或者RHEL上设置Nux Dexto ...
最新文章
- ajax实现给JavaScript中全局变量赋值(转)
- Python 操作Word文档插入图片和表格实例演示
- 如何让一个类可以被foreach枚举?
- c语言有图小游戏,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
- 【转】c#数字图像处理(四)线性点运算
- 图文混盘之---仿微博表情键盘Objective-C版
- Springboot自行车在线租赁系统毕业设计源码101157
- cafebabe.cc/nazo解答笔记
- 2022-2028年中国粮食物流行业市场发展调研及未来前景规划报告
- 逐行解析linux kernel NIC驱动
- 【备品备件需求】--入库记录查询增加仓库字段
- 输入密码三次,简单程序
- 自定义NDK交叉编译链(toolchain)
- Unity 骨骼动画
- 隐藏在《王者荣耀》中程序24种设计模式
- group by 用法解析
- 基于pytorch的聊天机器人项目
- c# .net接口协定Contract
- 哪个大学有计算机专业博士授权,哪些学校有计算机应用博士点
- Android允许后台活动管理,安卓基础知识(活动)