2020-03-27 搭建docker仓库私服

docker官方提供了私服镜像 registry,只要拉取这个镜像然后运行一个容器,就搭建完成一个私服了,非常方便。但这个私服管理功能非常简单,也没有安全控制,通常用于本机镜像私服或公司内网安全区域的私服。另外有一个开源软件 Harbor,在官方提供的registry的基础上,增加了安全控制、访问控制和管理功能,可以算是企业级registry服务了。
下面分别介绍两者的安装和配置。

1. 安装和配置 registry

1.1 安装 registry

registry 已经被docker官方做成一个镜像了,拉取下来即可:

docker pull registry

该服务将镜像数据存放在数据卷 /var/lib/registry 中,因此只要在创建容器时,将这个数据卷映射到宿主目录,即可。假设公司的镜像仓库机器IP为 192.168.1.236,镜像仓库存放数据的目录为:/data/registry,那么创建容器的命令如下:

docker run -d --name mr-registry -p 5000:5000 -v /data/registry:/var/lib/registry --restart always registry

其中的参数 --restart always,指定当启动docker时,自动启动容器 mr-registry

好了,现在仓库私服安装好了。我们可以通过在浏览器中访问如下url来确认其运行是否正常:

curl http://192.168.1.236:5000/v2/

如果显示“{}”,即为已经安装成功。

1.2. 配置 docker使用 私服

docker的配置文件,默认路径是 /etc/docker/daemon.json 。这是一个json配置文件。
如果该配置文件尚不存在,或没有任何配置属性,那么将该文件配置为:

{
  "insecure-registries: ["192.168.1.236:5000"]
}

如果该配置文件已经有属性了,则只需要追加如下属性即可:

  "insecure-registries: ["192.168.1.236:5000"]

完成配置后,需要让docker重新读取配置:

systemctl daemon-reload
service docker restart

此时,查看docker的已加载配置参数:

docker inspect

可以在输出中看到如下内容:

 Insecure Registries:
  192.168.1.236:5000
  127.0.0.0/8
 Registry Mirrors:
  https://sa2gfpxw.mirror.aliyuncs.com/
 Live Restore Enabled: false

可以看到 Insecure Registries 属性已经有了新增的内容。

1.3. 从私服拉取镜像

拉取还是推送镜像,如果不指定仓库名,则代表从公共仓库拉取或推送镜像。比如:

docker pull registry

代表从公共仓库拉取镜像。如果要从私服拉取镜像,命令格式为:docker pull 私服路径/镜像名字:镜像版本

docker pull 192.168.1.236:5000/registry

1.4. 推送镜像到私服

推送镜像到私服之前,需要先标记一个镜像为私服的镜像,命令格式为:docker tag 镜像名字:镜像版本 私服路径/镜像名字:镜像版本
比如我本地有一个自己制作的镜像 centos7-jdk11:11.0.4,则标记命令为:

docker tag centos7-jdk11:11.0.4 192.168.1.236:5000/centos7-jdk11:11.0.4

标记成功后,直接推送该镜像即可:

docker push 192.168.1.236:5000/centos7-jdk11:11.0.4

此时我们在浏览器中访问如下url来查看仓库私服下的仓库列表:

http://192.168.1.236:5000/v2/_catalog

可以看到结果如下:

{"repositories":["centos7-jdk11"]}

2. Harbor的安装和配置

harbor实际上只是在 registry的基础上,增加web的管理界面、安全控制和访问控制;也就是在 registry的镜像基础上,增加了应用、数据库等的镜像。harbor的在线安装,实际上是一段docker的compose脚本加上shell脚本构成。它最终也是使用docker来发布的。具体过程,后面后时间再写。

你可能感兴趣的:(2020-03-27 搭建docker仓库私服)