Docker 本地registry创建及image上传

通常情况下我们可以使用https://hub.docker.com/作为docker image的仓库,但是有些场景下,我们希望能够有本地的仓库。比如:
1,代码中含有保密的信息,比如环境的账号,密码等等;
2,代码本身作为公司的资产,不能对外公开,否则有法律风险。

在创建本地仓库之前,请确保已经在目的机器上安装了Docker。这里我们使用docker容器运行registry镜像的方式,来创建registry。

一般情况下安装的docker已经自带了registry镜像,如果没有可以从docker hub上获取。

在docker容器中启动registry镜像

docker@default:~$ run -d -p 5000:5000 localregistry registry

其中 localregistry表示此容器的名称,registry表示了镜像本身。可以运行docker ps查看结果:

docker@default:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
afae402eb9ae        registry            "/entrypoint.sh /e..."   4 hours ago         Up 20 minutes       0.0.0.0:5000->5000/tcp   localregistry

自动启动仓库

如果想让registry作为永久的可用仓库,应该在Docker machine重启或退出之后,设置registry仍然能够自动重启或保持使用状态。可以使用--restart=always达到此目的。

docker@default:~$ docker run -d -p 5000:5000 --restart=always --name localregistry registry

当Docker从registry获取image,或上传image到registry时,它会判断pull或push的uri的第一部分是否包含‘.’或‘:’来判断,是仓库名称还是用户名。
以localhost为例,如果url中只包含localhost,而没有‘.’或 :5000, Docker会认为localhost是用户名,效果就如同localhost/ubuntu或wxqsly/snapshot一样,此时Docker会请求默认的Docker Hub仓库。否则Docker会认为localhost代表了主机名,并且会请求到你指定的仓库。

从Docker Hub获取ubuntu镜像
docker@default:~$ docker pull ubuntu:16.04
将镜像标记为localhost:5000/my-ubuntu,这实际上给已有的镜像增加了额外的标记。当uri的第一部分为主机名(加端口),Docker在push的时候会认为第一部分为仓库的地址。如下例子将标记的镜像push到本地的仓库。
$ docker tag ubuntu:16.04 localhost:5000/my-ubuntu
$ docker push localhost:5000/my-ubuntu

参考

https://docs.docker.com/regis...
https://blog.docker.com/2013/...
https://rominirani.com/docker...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值