Docker私有仓库

2017/01/21 微服务与容器

私有仓库

有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。

docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。

1、Registry的部署

运行下面命令获取registry镜像

docker pull registry

启动一个容器。默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下

mkdir /registry
docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --name luck_registry registry

查看容器情况

root@Docker:/docker_img# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                           NAMES
d64be096095f        registry            "/entrypoint.sh /etc/"   9 seconds ago       Up 8 seconds        0.0.0.0:5000->5000/tcp                          luck_registry

打开浏览器输入http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常,

2、验证

现在我们通过将镜像push到registry来验证一下。 我的机器上有个hello-world的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库, docker tag luck/mynginx:v3 10.1.250.109:5000/mynginx

查看本地镜像

root@Docker:/docker_img# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
luck/mynginx                 v3                  3fe33a14ac95        53 minutes ago      354.4 MB
10.1.250.109:5000/mynginx    latest              3fe33a14ac95        53 minutes ago      354.4 MB

运行docker push将mynginx:v3镜像push到我们的私有仓库中

root@Docker:/docker_img# docker push 10.1.250.109:5000/mynginx
The push refers to a repository [10.1.250.109:5000/mynginx]
230ec9b8e80b: Pushed 
82a1c8e27611: Pushed 
24ffc279f779: Pushed 
fd4d87933a83: Pushed 
34e7b85d83e4: Pushed 
latest: digest: sha256:9a4673c0f7a90411a9e3674d46c5b6749c5f84605589259d8c1163a9630b855d size: 1367

现在可以查看我们本地/registry目录下已经有了刚推送上来的mynginx:v3

root@Docker:/registry/docker/registry/v2/repositories# pwd
/registry/docker/registry/v2/repositories
root@Docker:/registry/docker/registry/v2/repositories# ll
总用量 12
drwxr-xr-x 3 root root 4096 1月  16 17:04 ./
drwxr-xr-x 4 root root 4096 1月  16 17:04 ../
drwxr-xr-x 5 root root 4096 1月  16 17:05 mynginx/

或者也在浏览器中输入http://10.1.250.109:5000/v2/_catalog

在别的机器上Pull镜像:

[root@bogon ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
[root@bogon ~]# docker pull 10.1.250.109:5000/mynginx
Using default tag: latest
Trying to pull repository 10.1.250.109:5000/mynginx ... 
latest: Pulling from 10.1.250.109:5000/mynginx
5b46acfd4b04: Pull complete 
84155821d6ec: Pull complete 
8300122f491f: Pull complete 
3c85fa1e83a7: Pull complete 
Digest: sha256:9a4673c0f7a90411a9e3674d46c5b6749c5f84605589259d8c1163a9630b855d
Status: Downloaded newer image for 10.1.250.109:5000/mynginx:latest
[root@bogon ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
10.1.250.109:5000/mynginx   latest              3fe33a14ac95        About an hour ago   354.4 MB

3、可能问题

可能会出现无法push镜像到私有仓库的问题。这是因为我们启动的registry服务不是安全可信赖的。这是我们需要修改docker的配置文件/etc/default/docker,添加下面的内容,

DOCKER_OPTS="--insecure-registry 10.1.250.109:5000"

然后重启docker后台进程

systemctl restart docker

Search

    Table of Contents