容器技术-创建Docker 私有仓库

部署私用仓库

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

本节介绍如何使用本地仓库。

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

基于 docker-registry v2.x 版本。

API https://docs.docker.com/registry/spec/api/

获取
[root@localhost ~]# docker search registry --limit 1
[root@localhost ~]# docker pull registry
以容器方式运行
# docker run -d -p 5000:5000 --restart=always \
  --name registry-test registry

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

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

还可以配置私有仓库内部的监听端口(意义不大)

# docker run -d \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:5001 \
  -p 5001:5001 \
  --name registry-test \
  registry
在私有仓库上传、搜索、下载镜像

仓库建好后,就可以使用 docker push 命令上传本地仓库的镜像到私有仓库了。

注意:

​ 首先需要指定需要被推送镜像的标签为 私有仓库地址:port/镜像名 的格式

更改标签语法:

示例:

[root@localhost ~]# docker image ls alpine
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              3.7                 3fd9065eaf02        4 months ago        4.15MB
[root@localhost ~]# docker tag alpine:3.7 127.0.0.1:5000/alpine:3.7

推送:

[root@localhost ~]# docker push 127.0.0.1:5000/alpine:3.7
The push refers to repository [127.0.0.1:5000/alpine]
cd7100a72410: Pushed
...

curl 命令查看私有仓库的镜像

[root@localhost ~]# curl 127.0.0.1:5000/v2/_catalog
{"repositories":["alpine"]}

尝试删除本地仓库的镜像 127.0.0.1:5000/alpine:3.7

[root@localhost ~]# docker rmi 127.0.0.1:5000/alpine:3.7
[root@localhost ~]# docker image ls | grep alpine

从私有仓库拉取刚才推送的镜像

[root@localhost ~]# docker pull 127.0.0.1:5000/alpine:3.7
3.7: Pulling from alpine
Digest: sha256:8c03bb07a531c53ad7d0f6e7041b64d81f99c6e493cb39abba56d956b40eacbc
Status: Downloaded newer image for 127.0.0.1:5000/alpine:3.7
[root@localhost ~]# docker image ls | grep alpine
127.0.0.1:5000/alpine   3.7                 3fd9065eaf02        4 months ago        4.15MB
alpine                  3.7                 3fd9065eaf02        4 months ago        4.15MB
配置可以访问远程私有仓库的 Docker 主机

注意:是在访问远程仓库的 Docker 机器上配置(而不是私有仓库机器上)。

假如现在私用仓库部署在主机 10.18.42.174 上。

之后在其他需要访问此仓库的 Docker 机器上配置如下内容

对于 Centos7.x 系统,在 /etc/docker/daemon.json 中写入如下内容:

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

在这里插入图片描述

之后在 /lib/systemd/system/docker.service添加如下内容

EnvironmentFile=-/etc/docker/daemon.json

执行如下命令重启 Docker

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@gougou ~]# docker tag zhuzhu/hello-yanmeili 10.18.42.174:5000/hello
[root@gougou ~]# docker push 10.18.42.174:5000/hello
The push refers to repository [10.18.42.174:5000/hello]
4daac5e398bf: Pushed
latest: digest: sha256:5efd8d38bc16299bb61d4096ebf64ce46a4600aefda405a886e1b0cbc145922d size: 525

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shark_西瓜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值