Docker 搭建私有镜像仓库 registry


共计 1870 个字符,预计需要花费 5 分钟才能阅读完成。

1. 简介

内网环境下,很多机器可能都无法联网,如果不进行配置代理,那么这个时候就需要搭建一个私有仓库。

Docker Registry 是一个用于存储和分发 Docker 镜像的开源服务器应用程序,下面讲一下如何搭建。

2. 搭建

使用如下命令搭建一个 Docker Registry:

mkdir -p /home/docker/registry/config && \
touch /home/docker/registry/config/config.yml && \
cat > /home/docker/registry/config/config.yml <<EOF
version: 0.1
log:
  level: info
  formatter: text
  fields:
    service: registry
storage:
  filesystem:
    rootdirectory: /var/lib/registry
  delete:
    enabled: true
http:
  addr: 0.0.0.0:5000
EOF
docker run -d \
--name registry \
-p 5000:5000 \
-v /home/docker/registry/data:/var/lib/registry \
-v /home/docker/registry/config/config.yml:/etc/docker/registry/config.yml \
--restart=always \
registry:2

3. 配置

需要修改 docker 配置文件,告诉 docker 这个地址不需要 https,也就是配置不安全的仓库地址。

查看是否有 /etc/docker/daemon.json 这个文件,如果没有这个文件需要先创建文件,然后添加如下内容:

{
    "insecure-registries": ["172.21.9.125:5000"]
}

注意,其中的 ip 修改为自己的地址。

如果已经存在文件,那么只需要在最后一行添加英文逗号后,然后再添加 insecure-registries 这行即可。

重新加载配置文件并重启。

systemctl daemon-reload && systemctl restart docker

4. 镜像上传下载

4.1 上传

给镜像打 tag,这样才能够进行上传,否则需要设置默认地址,清朝云没有尝试过,应该是可以的。

docker tag registry 172.21.9.125:5000/registry

然后就可以直接 push。

docker push 172.21.9.125:5000/registry

5. 相关API

5.1 查看API是否可用

curl -I -X GET localhost:5000/v2

返回 200 代表可用。

5.2 查看所有镜像

curl -X GET localhost:5000/v2/_catalog

5.3 查看某个镜像所有tag

curl -X GET localhost:5000/v2/<image_name>/tags/list
# image_name为镜像名,如:
curl -X GET localhost:5000/v2/registry/tags/list

5.4 删除镜像

前提是配置文件需要配置为可删除:

storage:
  delete:
    enabled: true

需要先获取镜像的唯一标识。

curl -s -I -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
            localhost:5000/v2/<image_name>/manifests/<tag> | \
            awk '/Docker-Content-Digest/ { print $2 }' | tr -d '\r'

然后即可删除镜像,digest 即为唯一标识。

curl -X DELETE localhost:5000/v2/<image_name>/manifests/<digest>

示例:

curl -s -I -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
            localhost:5000/v2/registry/manifests/latest | \
            awk '/Docker-Content-Digest/ { print $2 }' | tr -d '\r'
curl -X DELETE localhost:5000/v2/registry/manifests/sha256:f4d532d482a050a3bb02886be6d6deda9c22cf8df44b1465f04c8648ee573a70

提醒:本文发布于489天前,文中所关联的信息可能已发生改变,请知悉!

Tips:清朝云网络工作室

阅读剩余
THE END