第 3 章 镜像 - 020 - 搭建本地 Registry

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

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

解决方案就是搭建本地的 Registry。

在 Docker Hub 上也有官方的镜像 registry。我们可以在 Docker 中运行自己的 registry。

 

启动 registry 容器

 1 root@ubuntu:~# docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
 2 Unable to find image 'registry:2' locally
 3 2: Pulling from library/registry
 4 cd784148e348: Pull complete 
 5 0ecb9b11388e: Pull complete 
 6 918b3ddb9613: Pull complete 
 7 5aa847785533: Pull complete 
 8 adee6f546269: Pull complete 
 9 Digest: sha256:979960c6c4e885f9c55f19c85ed33ebca2341a56998a82eecb3529ff0c7c3a7e
10 Status: Downloaded newer image for registry:2
11 f27eb6348026862f5744a916f67c4079d36c54fd46091d27a6c5d916f00ae5bc
  • 使用的镜像是 registry:2。
  • -d 是后台启动容器。
  • -p 将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。
  • -v 将容器 /var/lib/registry 目录映射到 Host 的 /myregistry,用于存放镜像数据。

 

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

1 root@ubuntu:~# docker tag gsophy/docker.edu:v1 localhost:5000/gsophy/docker.edu:v1  #在镜像的前面加上了运行 registry 的主机名称和端口
2 root@ubuntu:~# 
3 root@ubuntu:~# docker images localhost:5000/gsophy/docker.edu
4 REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
5 localhost:5000/gsophy/docker.edu   v1                  ef1dc54703e2        2 weeks ago         132MB
  • 镜像名称由 repository 和 tag 两部分组成。
  • 而 repository 的完整格式为:[registry-host]:[port]/[username]/xxx
  • 只有 Docker Hub 上的镜像可以省略 [registry-host]:[port]

 

通过 docker push 上传镜像

1 root@ubuntu:~# docker push localhost:5000/gsophy/docker.edu:v1 
2 The push refers to repository [localhost:5000/gsophy/docker.edu]
3 64446057e402: Pushed 
4 13a694db88ed: Pushed 
5 3fc0ec65884c: Pushed 
6 30d0b099e805: Pushed 
7 7b4e562e58dc: Pushed 
8 v1: digest: sha256:246fed9aa9be7aaba1e04d9146be7a3776c9a40b5cfb3242d3427f79edee37db size: 1367
9 root@ubuntu:~# 

 

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

 1 root@ubuntu:~# docker pull localhost:5000/gsophy/docker.edu:v1
 2 v1: Pulling from gsophy/docker.edu
 3 177e7ef0df69: Pull complete 
 4 65e7b631411e: Pull complete 
 5 3249ef8b9272: Pull complete 
 6 43ed8fedd0f6: Pull complete 
 7 02d3f33bda9d: Pull complete 
 8 Digest: sha256:246fed9aa9be7aaba1e04d9146be7a3776c9a40b5cfb3242d3427f79edee37db
 9 Status: Downloaded newer image for localhost:5000/gsophy/docker.edu:v1
10 root@ubuntu:~# 
11 root@ubuntu:~# docker images  localhost:5000/gsophy/docker.edu:v1
12 REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
13 localhost:5000/gsophy/docker.edu   v1                  ef1dc54703e2        2 weeks ago         132MB

 

除了镜像的名称长一些(包含 registry host 和 port),使用方式完全一样。

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

 

 

----------------------引用来自-----------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587627&idx=1&sn=b85416005be844a921c146883ac0e6b8&chksm=8d3080b2ba4709a42459bd4eb977e225e2847c7bc39888c3f6f3e2d903eaf54556518683fa57&scene=21#wechat_redirect

posted @ 2019-01-14 17:35  gsophy  阅读(154)  评论(0编辑  收藏  举报