linux中搭建docker私有仓库一:Registry

1.官方仓库Docker Hub

docker仓库(Repository)是用于存放镜像的地方。官方维护了一个公共的镜像仓库(Docker Hub),一般大部分的镜像我们可以直接从Docker Hub中进行下载。
我们可以在linux中直接使用 docker search 镜像名 来查找官方镜像。例如查找nginx镜像:
在这里插入图片描述
可以看到Docker Hub中收录的镜像名、描述、关注数、是否官方创建、是否自动创建信息。官方镜像是官方维护和创建的,automated 资源允许用户验证镜像的来源和内容。jwilder/nginx-proxy这种是有docker用户创建并维护的。我们可以通过在查找的后面加上–filter=stars=N显示收藏数量在N以上的镜像。
我们可以通过 docker pull nginx将官方镜像下载到本地。一般这种不指定版本的会下载最新版本。
在这里插入图片描述
如果需要将自己镜像推送到docker hub中就需要你注册docker hub账号,使用docker push userame去推送。

2.私有仓库Registry

考虑到网络及安全性方面,有时候使用公共仓库不太方便,这时候需要创建一个私有仓库。这时候需要借助于docker-registry。docker-registry是一个无状态、高度可扩展的服务的应用程序,可以用来存储私有的docker镜像。这里要求docker引擎版本在1.6.0及以上版本。这也是官方提供的私有仓库镜像。

2.1 安装运行docker-registry

我们可以通过官方的docker-registry镜像来运行。

docker run -d -p 5000:5000 --restart=always --name registry registry

默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。你可以通过 -v 参数来将镜像文件存放在本地的指定路径。例如下面的例子将上传的镜像放到本地的 /opt/docker/registry 目录

docker run -d \
    -p 5000:5000 \
    --restart=always \
    -v /opt/docker/registry:/var/lib/registry \
    registry

在这里插入图片描述
启动成功后通过curl your-server-ip:5000/v2/_catalog查看所有的镜像

[root@admin docker]# curl 192.168.80.128:5000/v2/_catalog
{"repositories":[]}

2.2 上传镜像到私有仓库

首先我们需要在/etc/docker/daemon.json(这个文件如果没有,请先创建)中配置下我们的私有仓库,在其中加入以下内容(其中第一个是配置的镜像加速器,这里的配置文件仅限于centos7+,debian 8+, unbuntu 16.04+)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ],
 "insecure-registries": [
    "192.168.80.128:5000"
  ]
}

然后需要重启下docker。systemctl restart docker,如果在run register时没有加–restart=always需要再启动一下register。
使用docker image ls查看我们的镜像,这里我将centos上传到我们私有的仓库去。首先需要给上传的镜像打tag.

docker tag your-image-name:tagname your-server-ip:5000/your-image-name:tagname

然后使用dcoker push上传

docker push your-registry-server-ip:5000/your-image-name:tagname

我测试时候是将centos打包上传如下:

[root@admin docker]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0f3e07c0138f        5 weeks ago         220MB
registry            latest              f32a97de94e1        8 months ago        25.8MB
hello-world         latest              fce289e99eb9        10 months ago       1.84kB
[root@admin docker]# docker tag centos:latest 192.168.80.128:5000/centos:latest
[root@admin docker]# docker image ls
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
centos                       latest              0f3e07c0138f        5 weeks ago         220MB
192.168.80.128:5000/centos   latest              0f3e07c0138f        5 weeks ago         220MB
registry                     latest              f32a97de94e1        8 months ago        25.8MB
hello-world                  latest              fce289e99eb9        10 months ago       1.84kB
[root@admin ~]# docker push 192.168.80.128:5000/centos:latest
The push refers to repository [192.168.80.128:5000/centos]
9e607bb861a7: Pushed 
latest: digest: sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf size: 529
[root@admin ~]# curl 192.168.80.128:5000/v2/_catalog
{"repositories":["centos"]}

2.3 下载镜像

docker pull your-server-ip:5000/your-image-name:tagname

[root@admin ~]# docker image rm 192.168.80.128:5000/centos:latest
Untagged: 192.168.80.128:5000/centos:latest
Untagged: 192.168.80.128:5000/centos@sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf
Deleted: sha256:0f3e07c0138fbe05abcb7a9cc7d63d9bd4c980c3f61fea5efa32e7c4217ef4da
Deleted: sha256:9e607bb861a7d58bece26dd2c02874beedd6a097c1b6eca5255d5eb0d2236983
[root@admin ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              f32a97de94e1        8 months ago        25.8MB
hello-world         latest              fce289e99eb9        10 months ago       1.84kB
[root@admin ~]# docker pull 192.168.80.128:5000/centos:latest
latest: Pulling from centos
729ec3a6ada3: Pull complete 
Digest: sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf
Status: Downloaded newer image for 192.168.80.128:5000/centos:latest
192.168.80.128:5000/centos:latest
[root@admin ~]# docker image ls
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
192.168.80.128:5000/centos   latest              0f3e07c0138f        5 weeks ago         220MB
registry                     latest              f32a97de94e1        8 months ago        25.8MB
hello-world                  latest              fce289e99eb9        10 months ago       1.84kB

发布了97 篇原创文章 · 获赞 44 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/github_38924695/article/details/102983461