十二)搭建本地 Registry

Docker Hub 虽然非常方便,但还是有些限制,比如:

  1. 需要 internet 连接,而且下载和上传速度慢。
  2. 上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 repository,但不是免费的。
  3. 安全原因很多组织不允许将镜像放到外网。

解决方案就是搭建本地的 Registry。Docker 已经将 Registry 开源了,同时在 Docker Hub 上也有官方的镜像 registry。下面我们就在 Docker 中运行自己的 registry。

(1)私有仓库配置:

增加信任:
root@cuiyongchao:/dockerfile# cat /etc/docker/daemon.json 
{ "insecure-registries":["10.0.0.20:5000"] }
root@cuiyongchao:/dockerfile# 
开启https:
cat /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 10.0.0.20:5000
修改好后重启docker 服务
systemctl daemon-reload 
systemctl restart docker
重启docker服务后,将容器重启
docker start $(docker ps -aq)

(2)创建容器

①启动 registry 容器。

root@cuiyongchao:/dockerfile# docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
cbdbe7a5bc2a: Pull complete 
47112e65547d: Pull complete 
46bcb632e506: Pull complete 
c1cc712bcecd: Pull complete 
3db6272dcbfa: Pull complete 
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for registry:2
23db09da07b88129b557ebd1c3e960e700bca8d88c39a0ca01d2db05532671f1
root@cuiyongchao:/dockerfile# 

注释:

①镜像是 registry:2。  
②`-d` 是后台启动容器。  
③`-p` 将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。端口映射我们会在容器网络章节详细讨论。  
④`-v` 将容器 /var/lib/registry 目录映射到 Host 的 /myregistry,用于存放镜像数据。`-v` 的使用我们会在容器存储章节详细讨论。 

②通过 docker tag 重命名镜像,使之与 registry 匹配。

docker tag cuiyongchao007/httpd:v1 10.0.0.20:5000/cuiyongchao007/httpd:v1

​ 我们在镜像的前面加上了运行 registry 的主机名称和端口。 前面已经讨论了镜像名称由 repository 和 tag 两部分组成。而 repository 的完整格式为:[registry-host]:[port]/[username]/xxx 只有 Docker Hub 上的镜像可以省略 [registry-host]:[port] 。

③通过 docker pull 上传镜像。

root@cuiyongchao:/dockerfile# docker push 10.0.0.20:5000/cuiyongchao007/httpd
The push refers to repository [10.0.0.20:5000/cuiyongchao007/httpd]
850c0c904ff3: Pushed 
c264370aa736: Pushed 
e6f7f192bbc8: Pushed 
6d80bc0bd923: Pushed 
d0fe97fa8b8c: Pushed 
v1: digest: sha256:60b82a0c2599b217d5231d3a54eb9f691ac8bc15b66f8f5f79f383f87c9c51ce size: 1366

④现在已经可通过 docker pull 从本地 registry 下载镜像

root@cuiyongchao:/dockerfile# docker pull 10.0.0.20:5000/cuiyongchao007/httpd:v1
v1: Pulling from cuiyongchao007/httpd
Digest: sha256:60b82a0c2599b217d5231d3a54eb9f691ac8bc15b66f8f5f79f383f87c9c51ce
Status: Downloaded newer image for 10.0.0.20:5000/cuiyongchao007/httpd:v1
10.0.0.20:5000/cuiyongchao007/httpd:v1

以上是搭建本地 registry 的简要步骤。当然 registry 也支持认证,https 安全传输等特性,具体可以参考官方文档 https://docs.docker.com/registry/configuration/

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/cuiyongchao007/p/13949798.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!