搭建docker私有镜像仓库

为什么要自己搭建镜像仓库

Docker registry是存储Docker image的仓库,运行push、pull、 search 时,是通过Docker daemon与docker registry通信。

镜像仓库(Docker Registry)有公共的和私有的两种形式:
公共仓库:例如Docker官方的Docker Hub,国内也有一些云服务商提供类似于Docker Hub的公开服务,比如网易云镜像服务、DaoCloud镜像服务、阿里云镜像服务等。
用户在本地搭建私有Docker Registry
因为企业中的镜像那不都是商业机密么,肯定不希望开源,不然还怎么赚钱,所以企业自己的镜像最好是采用私有Docker Registry来实现。

下载registry 镜像

docker pull registry

启动镜像

docker run -itd -v /opt/registry:/var/lib/registry -p 5000:5000 -e  --restart=always --name registry registry:latest

-itd:在容器中打开一个伪终端进行交互操作,并在后台运行

-v:把宿主机的/home/wuzhibin/docker/registry目录绑定到容器/var/lib/registry来实现数据的持久化;

-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了

--restart=always: 这是重启的策略,在容器退出时总是重启容器

--name registry: 创建容器命名为registry

拉起官方镜像,在一台搭建镜像仓库的容器,并将容器的数据盘映射本地数据持久化,最终的目的是将设置为私有的镜像仓库保存镜像。

添加镜像仓库

# 在其他的服务上设置的镜像仓库地址为私仓地址

vim /etc/docker/daemon.json

{

  "insecure-registries": ["localhost:5000"],

}

systemctl daemon-reload

systemctl restart docker

# insecure-registries 为上一步开启的私有仓库地址

# registry-mirrors 为阿里云镜像加速地址

# 修改docker配置之后一定要重新启动docker

推送镜像到私仓

# load 一个镜像

docker load -i jrei.tar

docker images查看镜像:

# 打上私仓标签,如果想推送到私仓必须打上私仓的标签,应该为默认是推送到公共仓库的。

docker tag c23dced56620 localhost:5000/systemd-debian:12

# 查看镜像名

docker images

# 推送私仓,localhost:5000/systemd-debian:12为上一步打上镜像名的镜像

docker push localhost:5000/systemd-debian:12

# 查看私仓镜像仓库

curl localhost:5000/v2/_catalog

# 结果为{"repositories":["systemd-debian"]}

# 查看私仓的镜像版本

curl localhost:5000/v2/systemd-debian/tags/list

 在其他的服务上设置的镜像仓库地址为私仓地址就可以通过私仓拉起分发布镜像了, 拉取私仓的镜像不仅仅要设置镜像仓库的地址,另外镜像上也要打上私仓的标签,不然默认会从公共仓库拉起和发布

docker pull指定架构拉取

docker pull --platform=linux/arm64 <image-name>

注意

目前使用localhost:5000时,在buildkit容器中拉取镜像会失败,需要将IP设置为IP地址,且必须使用https来访问才可以。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值