我是靠谱客的博主 缓慢唇彩,这篇文章主要介绍在 ubuntu 搭建 docker registry 私有仓库,现在分享给大家,希望可以做个参考。

为什么要搭建 docker 私有仓库

原因有几个:

  1. 项目需要,不希望将项目放到 docker hub 上。
  2. 环境需求,考虑网络、效率的问题,希望在私有服务器上建立自用的仓库,提高便利性和访问速度。
  3. 可以做更多的个性化配置。

用什么搭建 docker 私有仓库

docker 官方提供了 registry 的镜像,可以使用它来建私有仓库。

本次搭建的环境

在这里先说明一下本文的实验环境:

  1. docker 仓库服务器: ubuntu 14.04 ip地址:192.168.188.112
  2. docker 客户端机器: CentOS 7 ip地址: 192.168.188.107

搭建过程

目标

在ubuntu 14 的服务器上,安装最新版本的 docker-ce,在 docker hub 获取 registry 镜像,并启动仓库容器。在 docker 客户端机器,可以从服务器的仓库获取镜像文件。

服务器安装最新版本的 docker-ce

复制代码
1
2
curl -sSL https://get.docker.com/ | sh

说明: 安装过程视网络情况而定,可能需要话费一段时间,需要耐心等待

安装加速器

由于在国内,访问国外的网站速度可能会较慢,所以,最好为ubuntu 添加加速器。

对于 ubuntu 14 的系统环境来说,修改文件 /etc/default/docker :

复制代码
1
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

从 docker hub 获取官方 registry 镜像,并启动 registry 容器

复制代码
1
2
3
4
5
6
1. 获取 registry 镜像: docker pull registry # 默认就是最新的 latest 版本 2. 用registry 镜像启动一个仓库容器: docker run -d --name=my-docker-registry-2 --restart=always -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 说明:启动一个名字为 my-docker-registry-2 的容器,端口映射到宿主机的5000,挂载宿主机目录 /opt/data/registry 到容器的 /tmp/registry ,用于存储 push 进去的镜像文件。

在宿主机本地测试仓库

1.从 docker hub 获取一个ubuntu 16.04 的镜像

复制代码
1
2
docker pull ubuntu:16.04

2.将上面获取的镜像重新打 tag :

复制代码
1
docker tag ubuntu:16.04 192.168.188.112:5000/my-ubuntu

3.将新打标签的镜像push 到本地仓库,docker 命令会从“. 和 : ”的格式识别是本地路径的仓库:

复制代码
1
docker push 192.168.188.112:5000/my-ubuntu

说明:
这一步,可能会报错,错误信息如下 :
hell@ubuntu:/opt/docker/registry/conf$ sudo docker push 192.168.188.112:5000/my-ubuntu
The push refers to repository [192.168.188.112:5000/my-ubuntu]
Get https://192.168.188.112:5000/v2/: http: server gave HTTP response to HTTPS client
解决办法:
ubuntu 修改默认文件
sudo vim /etc/default/docker

修改:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registry=192.168.188.112:5000"

4.删除从docker hub 下载的镜像:

复制代码
1
2
3
4
5
docker rmi ubuntu:16.04 192.168.188.112:5000/my-ubuntu 说明: 删除了本地的两个镜像文件 docker images 说明:查看本地的镜像文件,确认上一步已经删除成功。

5.查看仓库中是否已经上传镜像成功:

复制代码
1
2
3
4
hell@hell:~$ curl localhost:5000/v2/_catalog {"repositories":["my-ubuntu"]} 说明: 这样,已经就是查询到push 镜像成功了。

6.从本地仓库拉取镜像:

复制代码
1
2
docker pull 192.168.188.112:5000/my-ubuntu 说明: docker 命令通过“ . : ”识别是本地仓库

7.结果:

复制代码
1
2
3
4
5
6
7
hell@hell:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE 127.0.0.1:5000/my-ubuntu latest 9adf4ebd74b9 3 weeks ago 285MB 192.168.188.112:5000/my-ubuntu latest 9adf4ebd74b9 3 weeks ago 285MB registry 说明: 可以看到用 127.0.0.1或者192.168.188.112两个地址都能获取成功

从其他机器获取镜像

我们搭建了私有仓库,如果只能在一台宿主机上使用,意义就不大了。但是,官方的 registry 私有仓库是不支持其他客户端直接访问仓库服务器的。需要多做一些配置修改。

使用修改 --insecure-registry 参数的方法

修改 --insecure-registry 参数的方法,是最简单的。如果需要安全性更高的,就需要配置 SSL 访问了,这中方式留待以后继续研究。

仓库服务器修改
复制代码
1
2
3
4
5
6
ubuntu 默认文件是 sudo vim /etc/default/docker 修改: DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registry=192.168.188.112:5000"
修改配置后,需重启docker 进程

为了做到重启docker 后台进程时,不会引起所有容器都被强制关闭,需要修改一些配置文件,具体请参考这篇博文:《如何保证 docker 后台进程重启,而不引起容器关闭》。

centos 客户端配置

客户机这里使用的系统是 CentOS 7,在 CentOS 7上安装docker-ce 版本,请参考这篇博文:《centos7安装docker-ce新版》。

1.按上面的方法安装好docker-ce 版本后,修改配置文件:

复制代码
1
2
3
vim /lib/systemd/system/docker.service 添加: ExecStart=/usr/bin/dockerd --insecure-registry 192.168.188.112:5000

CentOS 的docker 后台进程重启,默认是不会导致容器强制关闭的,所以,修改配置文件后,可以放心重启后台进程:

复制代码
1
systemctl restart docker

2.验证

复制代码
1
2
3
[root@centos_7 ~]# curl -L http://192.168.188.112:5000/v2/_catalog {"repositories":["my-ubuntu-sshd"]}

3.从私有仓库下载镜像

复制代码
1
2
docker pull 192.168.188.112:5000/my-ubuntu

4.成功下载镜像文件

复制代码
1
2
3
4
5
[root@centos_7 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 dc4491992653 2 weeks ago 222MB 192.168.188.112:5000/my-ubuntu latest 9adf4ebd74b9 3 weeks ago 285MB

总结

docker 官方的 registry 仓库,默认是不支持从其他客户端拉取服务器仓库的镜像文件的,不过简单的办法,就是打开 --insecure-registry 这个选项。

转载于:https://blog.51cto.com/hellocjq/2070884

最后

以上就是缓慢唇彩最近收集整理的关于在 ubuntu 搭建 docker registry 私有仓库的全部内容,更多相关内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部