详解Docker私有仓库最简便的搭建方法

Doker 在业界的应用越来越广泛,怎么用户管理好自己的镜像、容器等就是一个迫在眉睫的任务。

由于业务需要,我们需要在搭建一套自己的 Docker 私有镜像仓库,网上找了很多,都是说要 pull 一个 regisitry 镜像,然后通过这个镜像启动一个容器来运行仓库应用,我按照官网的说明 pull 了一个 registry ,但是启动的时候有报错,具体是什么就不细说了,反正是有错,于是开始研究别的方法,别说还真找到了一个,而且是我发现的最简便的办法,我不知道我是不是国内第一个发现的,但我应该是第一个写出来给大家参考的。

下面不废话,直接说方法:

  • 首先,你的系统要是 CentOS 7.0 以上,因为内核的要求,以及各种相关的库和软件的需要,以及 epel 的需要。
  • 直接安装 docker-registry 这个包。
  • 稍微修改一下配置,让你的私有仓库支持 http,因为从 docker1.3.2 开始,docker registry 默认都是使用 https 协议而不使用 http,甭管你从 docker hub 上找你需要的镜像,还是你自己打出来的 private registry。
  • 重启相关的 docker 服务。
  • 测试及使用。

下面就详细列一下每一步的步骤:

使用 CentOS 7.X 系统,添加 epel 源,并更新系统到最新版本,重启让新的内核生效。

#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#yum clean all
#yum makecache
#yum update -y
#reboot

安装 docker 相关的服务,其中 docker-registry 这个最重要,因为这就是私有仓库的服务,有了这个服务就不需要像网上一样去 pull 镜像,然后再起一个容器。

#yum install docker docker-registry -y

如果不需要开发相关的接口调用程序,这两个就够了,如果需要开发就直接安装所有的 docker 包,一共也没几个。但是最好把 docker-latest 和 docker-latest-logrotate 两个包卸载掉,因为这俩是 docker 客户端,版本是 1.12 跟 server 的版本 1.10 不是太匹配。

#yum install docker* -y
#yum remove docker-latest* -y

把 docker 的两个服务设置为自动启动,并让其运行。

#systemctl enable docker
#systemctl start docker
#systemctl enable docker-registry
#systemctl start docker-registry

查看一下本机监听的端口,是不是有5000这个端口了?5000端口就是默认的 docker-registry 监听端口,当然,这个你可以根据自己喜欢进行修改。

[root@01 /]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID/Program name
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  1109/sshd
tcp  0  0 127.0.0.1:25   0.0.0.0:*    LISTEN  1384/master
tcp  0  0 0.0.0.0:5000   0.0.0.0:*    LISTEN  20437/python
tcp6  0  0 :::22     :::*     LISTEN  1109/sshd
tcp6  0  0 ::1:25     :::*     LISTEN  1384/master

测试一下是不是能通过网络进行访问了?

[root@01 /]# curl "http://192.168.1.107:5000"
"\\"docker-registry server\\""[root@01 /]#
[root@01 /]#

既然可以访问了,那就往这上面 push 一个镜像来测试一下吧。这个需要你首先 tag 一个镜像,然后才能 push 上去。以我目前的已经有的镜像为例。

[root@01 /]# docker tag cfba59e097ba 192.168.1.107:5000/test1
[root@01 /]# docker images
REPOSITORY     TAG     IMAGE ID   CREATED    SIZE
192.168.1.107:5000/test1 latest    ac0b483c17fa  3 days ago   634.6 MB
docker.io/redmine   latest    cfba59e097ba  3 days ago   634.6 MB
docker.io/registry   latest    c9bd19d022f6  2 weeks ago   33.27 MB
[root@01 /]#

现在 push 的话有报错,如下。

[root@01 /]# docker pull 192.168.1.107:5000/test1
Using default tag: latest
Trying to pull repository 192.168.1.107:5000/test1 ...
unable to ping registry endpoint https://192.168.1.107:5000/v0/
v2 ping attempt failed with error: Get https://192.168.1.107:5000/v2/: EOF
 v1 ping attempt failed with error: Get https://192.168.1.107:5000/v1/_ping: EOF
[root@01 /]#

但是基本上一眼就能看出来,地址里都是 https,而我现在能访问的只是 http,所以,就需要解决启用 http 的问题,因为我的需求是在内网里搭建,外网无法访问,何必要加密,只会拖慢速度。接下来就是修改对应的配置文件,启用 http ,这个配置文件也是有说这个有说那个的,下面的才是正确的配置文件,亲测有效,如下。

[root@01 /]# vim /etc/sysconfig/docker

把下面这一行添加进去。

OPTIONS='--insecure-registry 192.168.1.107:5000'

重启 docker 服务。

[root@01 /]# systemctl restart docker docker-registry

再次 push,成功完成。

[root@01 system]# docker push 192.168.1.107:5000/test1
The push refers to a repository [192.168.1.107:5000/test1]
07c28c5d0371: Image successfully pushed
6365a80ad26a: Image successfully pushed
c5e7c0f1d017: Image successfully pushed
b45f06d28f46: Image successfully pushed
3f3c0394ba5a: Image successfully pushed
ddd6e2a8209e: Image successfully pushed
f306cb9361f7: Image successfully pushed
2d143a3783bc: Image successfully pushed
f110684b8ae3: Image successfully pushed
d7d24df90586: Image successfully pushed
e26addf75a78: Image successfully pushed
82c666956815: Image successfully pushed
9a2b1c643e93: Image successfully pushed
eb9546f264dc: Image successfully pushed
f96222d75c55: Image successfully pushed
Pushing tag for rev [cfba59e097ba] on {http://192.168.1.107:5000/v1/repositories/test1/tags/latest}
[root@01 system]#

既然成功了,就往下 pull 一下试试,看看能不能让别的机器用,结果当然也是成功的,因为我已经 pull 过了,所以显示镜像已经存在,如下。

[root@01 /]# docker pull 192.168.1.107:5000/test1
Using default tag: latest
Trying to pull repository 192.168.1.107:5000/test1 ...
Pulling repository 192.168.1.107:5000/test1
cfba59e097ba: Already exists
f96222d75c55: Already exists
d17727727b61: Already exists
92db66c8ffce: Already exists
10a436a2f8fa: Already exists
8b40995a66da: Already exists
a2cba87d9ea4: Already exists
5a187c7a57c4: Already exists
d15f50d30606: Already exists
4366383cdf86: Already exists
c7cb938f30c3: Already exists
f135d604f740: Already exists
3f3d23c69aef: Already exists
e6adcc9c0e4b: Already exists
53289b480679: Already exists
Status: Image is up to date for 192.168.1.107:5000/test1:latest
192.168.1.107:5000/test1: this image was pulled from a legacy registry. Important: This registry version will not be supported in future versions of docker.
[root@01 /]#

至此,简单的私有仓库已经搭建完毕,后续如果有需求要在公网上提供服务的话,加 SSL 证书,加用户名/密码等操作按部就班地去完成就行了。IT 技术更新很快,可能之前还没有这个服务,只是最近才有,所以,选了这一行就需要一辈子不断学习不断进步才能站在桥头迎风斩浪。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Docker Registry 私有仓库搭建详细步骤

    Docker  Registry 私有仓库搭建 官方已经提供了很多版本的 Linux 镜像,直接从官方仓库(Public Repositories)下载就可以了.如果考虑到安全性和速度,我们可能会想在自己局域网里架设一个私有仓库(Private Repositories)来放我们自己的镜像,Docker-Registry 正是我们需要的工具. 本次搭建 docker-registry server (dev) (v0.9.0) 添加docker用户和目录 为了安全起见,我们可以添加一个用户doc

  • 详解centos7 docker1.12安装私有仓库

    1.安装docker:我用的是centos7 操作系统 3.10,虽然可以直接yum install docker 但安装的docker1.10 稳定版,生产环境要用1.12的所以需要配置下yum源. 操作步骤: 1. 配置yum源 touch /etc/yum.repos.d/docker.repo 输入如下 [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/

  • docker 如何搭建私有仓库(ubuntu 14.04,Docker版本1.6.4)详细介绍

    docker 搭建私有仓库 本篇文章描述了多个机器可以在内网中访问自己的私有仓库,访问仓库时需要CA认证!最简单,最低保障私有仓库的安全性!在一个比较庞大的集群里,可以运行多个私有仓库的replica,然后借用代理来balance请求! 1.测试环境 本人测试环境为ubuntu 14.04,Docker版本1.6.4(版本稍微比较老,新版本安装流程是一样的).官网上说:You need to install Docker version 1.6.0 or newer. 在阿里云上开了两台机器:

  • Docker搭建本地私有仓库的详细步骤

    和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库.使用私有仓库有许多优点: 一.节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可: 二.提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用. 接下来我们就大致说一下如何在本地搭建私有仓库. 环境准备 环境:两个装有Docker的Ubuntu虚拟机 虚拟机一:192.168.112.132 用户开发机 虚拟

  • 详解CentOS 7 : Docker私有仓库搭建和使用

    系统环境: CentOS 7.2 192.168.0.179:Docker仓库 192.168.0.60:客户端 安装并启动docker yum -y install docker systemctl start docker systemctl enable docker 搭建私有仓库 179上下载registry镜像 docker pull registry 防火墙添加运行5000端口 iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT 下载完

  • Centos 7中Docker私有仓库的搭建方法

    系统配置: CentOS 7 内核 3.10.0-229.20.1.el7.x86_64 , Docker version 1.8.2 运行 docker registry 执行下列命令: 复制代码 代码如下: docker run /     -d /     --name private_registry  --restart=always /     -e SETTINGS_FLAVOUR=dev /     -e STORAGE_PATH=/registry-storage /    

  • Docker 教程之私有仓库详解

    私有仓库 有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用. 本节介绍如何使用本地仓库. docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库. 安装运行 docker-registry 容器运行 在安装了 Docker 后,可以通过获取官方 registry 镜像来运行. $ sudo docker run -d -p 5000:5000 registry 这将使用官方的 registry 镜像来启动本地的私有仓库. 用户可

  • Docker 私有仓库恢复实例详解

    Docker 私有仓库恢复 之前openstack平台由于停电等影响,导致之前制作的registry 私有仓库的主机挂掉,还好数据挂载在nfs中,然后现在尝试重新启动恢复. 虚机安装nfs服务 apt-get install -y nfs-common 编辑 /etc/fstab 写入远程挂载地址 10.50.8.12:/export/DockerRepo   /var/lib/docker/registry      nfs    defaults        0 0 然后进行挂载: mou

  • 详解Docker私有仓库最简便的搭建方法

    Doker 在业界的应用越来越广泛,怎么用户管理好自己的镜像.容器等就是一个迫在眉睫的任务. 由于业务需要,我们需要在搭建一套自己的 Docker 私有镜像仓库,网上找了很多,都是说要 pull 一个 regisitry 镜像,然后通过这个镜像启动一个容器来运行仓库应用,我按照官网的说明 pull 了一个 registry ,但是启动的时候有报错,具体是什么就不细说了,反正是有错,于是开始研究别的方法,别说还真找到了一个,而且是我发现的最简便的办法,我不知道我是不是国内第一个发现的,但我应该是第

  • 详解Docker私有仓库Registry的搭建验证

    1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像.这个可以通过开源软件Registry来达成目的. Registry在github上有两份代码:老代码库和新代码库.老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发.从2.0版本开始就到

  • 详解docker私有仓库搭建与使用实战

    hub.docker.com上可以保存镜像,但是网速相对较慢,在内部环境中搭建一个私有的公共仓库是个更好的方案,今天我们就来实战搭建私有docker仓库吧: 环境规划 需要两台机器:docker私服仓库的server和使用docker的普通机器,这两个机器都是ubuntu16版本的server,ip信息如下: 机器名 ip 功能 docker-registry 192.168.119.148 docker私有仓库服务器 docker-app 192.168.119.155 运行docker服务的

  • Docker私有仓库Harbor介绍和部署方法详解

    Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的.这里介绍一款企业级Docker镜像仓库Harbor的部署和使用,在Kubernetes集群中,推荐使用Harbor仓库环境. 一.Harbor仓库介绍 我们在日常Docker容器使用和管理过程中,渐渐发现部署企业私有仓库往往是很有必要的, 它可以帮助你管理企业的一些敏感镜像, 同时由于Docker Hub的下载速度和GF

  • 详解docker下的Mysql镜像的使用方法

    通常初学者学习docker时,不太清楚怎样拉取一个Mysql镜像并使用,今天这篇文章简单介绍一下使用流程. 一.预习一下用到的docker命令: 1.docker images 列出本地主机上的镜像. 2.docker pull 从Docker Hub中拉取或者更新指定镜像. 3.docker run -d 标识是让 docker 容器在后台运行. -p 标识通知 Docker 将容器内部使用的网络端口映射到我们使用的主机上. --name 定义一个容器的名字,如果在执行docker run时没

  • 详解docker容器间通信的一种方法

    以我的ghost博客为例进行说明,我在VPS上用docker启动了两个ghost博客,还有一个Nginx做反向代理,将两个域名分别指向两个博客. docker启动命令 ghost: docker run -e NODE_ENV=production --name ghost1 -v /path/to/data/ghost/ghost1/:/var/lib/ghost -d ghost docker run -e NODE_ENV=production --name ghost2 -v /path

  • 详解Docker退出容器不关闭容器的方法

    进入docker容器后如果退出容器,容器就会变成Exited的状态,那么如何退出容器让容器不关闭呢? 如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器,这一点很重要,请牢记! 以下示例为退出容器但不关闭容器 [root@localhost ~]# docker attach c600c4519fc8 [root@c600c4519fc8 /]# exit exit [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND C

  • 一文教会你如何高效地搭建Docker私有仓库

    目录 前言 1. 私有仓库 2. 搭建私有仓库 环境部署 自建仓库 3. 使用 TLS 证书 生成证书 基本身份验证 4. Nginx 反向代理仓库 5. 可视化私有仓库 总结 前言 Docker 仓库用于保存 Docker 镜像,分为公有仓库与私有仓库. 公有仓库就是 Docker Hub 一类供所有 Docker 用户使用的 Docker 仓库. 私有仓库是指由个人或企业搭建的 Docker 仓库,供其自身使用,是非公开的. 本篇文章将对 Docker 私有仓库及其相关内容进行详解. 1.

  • 详解Docker镜像与容器的常见操作

    镜像加速器 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.国内很多云服务商都提供了国内加速器服务,例如: 网易云加速器 https://hub-mirror.c.163.com 阿里云加速器(需登录账号获取): https://cr.console.aliyun.com/cn-hangzhou/mirrors 国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档. 在CentOS7系统

随机推荐