原作者: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私有仓库)相关推荐

  1. centos+7虚拟机web服务器,CentOS7上搭建WEB服务器

    mysql 安装 直接yum install mysql-server是不可以的 1 wget http://repo.mysql.com/mysql-community-release-el7-5. ...

  2. DNF包管理命令在CentOS 8和RHEL 8上的使用

    DNF包管理命令在CentOS 8和RHEL 8上的使用 DNF意思是" Dandified Yum". 这是下一代的yum软件包管理器(Yum的派生).DNF命令使用libsol ...

  3. linux(centos)基于docker搭建的oracle服务器,并上传到私有仓库

    安装docker 首先通过上面的步骤安装linux系统: 更新yum -y update : 安装yum install docker -y: 配置镜像加速器vi /etc/docker/daemon ...

  4. redhat linux系统补丁,如何在CentOS和RHEL系统上安装或自动更新安全补丁

    在 Linux 系统上,其中一个最重要的需求就是保持定期更新最新的安全补丁,或者为相应的 Linux 版本更新可用的安全补丁. 在之前的文章中,我们分享了如何在 Debian/Ubuntu 上配置自动 ...

  5. 如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置

    如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置 ...  [复制链接] 发表于 2014-9-16 18:50 | 来自  51CTO网页 [只看他] 楼主 步骤一,开 ...

  6. edxp显示未安装_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器

    在 Centos 8 和 RHEL 8 系统中,默认未安装 VNC 服务器,它需要手动安装.在本文中,我们将通过简单的分步指南,介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器. ...

  7. linux服务器上svn的log_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器 | Linux 中国...

    在 Centos 8 和 RHEL 8 系统中,默认未安装 VNC 服务器,它需要手动安装.在本文中,我们将通过简单的分步指南,介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器. ...

  8. 查看vnc端口_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器

    在 Centos 8 和 RHEL 8 系统中,默认未安装 VNC 服务器,它需要手动安装.在本文中,我们将通过简单的分步指南,介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器. ...

  9. Linux有问必答:如何在CentOS或者RHEL上启用Nux Dextop仓库

    Linux有问必答:如何在CentOS或者RHEL上启用Nux Dextop仓库 问题: 我想要安装一个在Nux Dextop仓库的RPM包.我该如何在CentOS或者RHEL上设置Nux Dexto ...

最新文章

  1. ajax实现给JavaScript中全局变量赋值(转)
  2. Python 操作Word文档插入图片和表格实例演示
  3. 如何让一个类可以被foreach枚举?
  4. c语言有图小游戏,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
  5. 【转】c#数字图像处理(四)线性点运算
  6. 图文混盘之---仿微博表情键盘Objective-C版
  7. Springboot自行车在线租赁系统毕业设计源码101157
  8. cafebabe.cc/nazo解答笔记
  9. 2022-2028年中国粮食物流行业市场发展调研及未来前景规划报告
  10. 逐行解析linux kernel NIC驱动
  11. 【备品备件需求】--入库记录查询增加仓库字段
  12. 输入密码三次,简单程序
  13. 自定义NDK交叉编译链(toolchain)
  14. Unity 骨骼动画
  15. 隐藏在《王者荣耀》中程序24种设计模式
  16. group by 用法解析
  17. 基于pytorch的聊天机器人项目
  18. c# .net接口协定Contract
  19. 哪个大学有计算机专业博士授权,哪些学校有计算机应用博士点
  20. Android允许后台活动管理,安卓基础知识(活动)

热门文章

  1. 使用 jQuery Mobile 与 HTML5 开发 Web App (九) —— jQuery Mobile 页面与对话框
  2. 使用.htaccess文件为站点文件夹设置密码保护
  3. linux中进程的用户管理
  4. oracle取某时间段的数据
  5. python之matplotlib详解
  6. DbHelper重用性方案 优化工具类 jdbc
  7. 启动django项目 默认启动与指定端口启动
  8. 办公自动化-world转pdf-0223
  9. linux-组管理-添加组-删除组
  10. 数据结构与算法-时间复杂度