docker registry push 覆盖_Docker部署私有Registry简明教程

24d6dec4e5ab1a63b216d0379c2be540.png

​Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

  • Docker Client客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • DockerContainer容器

本篇文章我们通过一个简单的教程来向大家介绍下,如何在自己的虚拟机里搭建一个私有的Registry,Docker Registry是一个提供存储Docker镜像的服务,在一个项目小组中我们可以把我们的project打包成一个Docker image,并且把它push到Registry,当需要测试project的时候我们可以把它从Registry pull下来,并且把它部署到Docker中。

下面我们详细的描述下整个部署步骤:

步骤一:安装Docker

yum install -y docker

查看docker版本:

docker --version
e5ab5f9b560285920cabd0d998cdce5a.png

启动docker:

systemctl enable dockersystemctl start docker

查看docker服务是否启动

ps auwx | grep docker
3436b24d456d518259d80b2ce77bd13a.png

步骤二:Pull Registry镜像

docker pull docker.io/registry:latestdocker pull konradkleine/docker-registry-frontend:v2

查看Docker镜像

docker images
d02f243264bea54fbadcc7acc294c10c.png

步骤三:运行Registry和Registry Web UI镜像

docker run -d  -p 5000:5000  --restart=always  --name registry docker.io/registry:latest

查看Registry是否运行起来

docker ps -a
b9fea6245731771291ab193a571d982c.png

验证Registry Service是否正常

curl http://localhost:5000/v2/_catalog
5fd21b13a24681175e7f6527866b6a9c.png

因为我们还没有向Registry push任何image,所以通过Registry API查询repositories为空。

运行docker-registry-frontend,主要是提供web UI,方便查看Docker image

docker run -d  --link registry:registry  --name registry-frontend  -e ENV_DOCKER_REGISTRY_HOST=registry  -e ENV_DOCKER_REGISTRY_PORT=5000  -p 9090:80  konradkleine/docker-registry-frontend:v2

--link:docker-registry-frontend需要访问registry后端API,所以需要在这里加上此参数,并且ENV_DOCKER_REGISTRY_HOST参数必须是registry的name;

查看docker-registry-frontend是否运行

docker ps -a
42c718c5dcd92c875a5262f284f387f1.png

通过浏览器访问registry-frontend web UI,由于虚拟机绑定的静态IP地址是10.0.0.10,所以访问URL是http://10.0.0.10:9090

5b9bc343c79168374aebf65eccd49699.png

步骤四:验证整个Registry是否工作正常

pull一个最小的Docker image用于测试

docker pull daocloud.io/library/busyboxdocker tag daocloud.io/library/busybox:latest 10.0.0.10:5000/test/busybox:latest​docker push 10.0.0.10:5000/test/busyboxThe push refers to a repository [10.0.0.10:5000/test/busybox]Get https://10.0.0.10:5000/v1/_ping: http: server gave HTTP response to HTTPS client

出现上面错误是由于Client端采用https,而Registry Server端采用http导致的,需要修改docker配置文件统一采用http协议,修改内容如下:

39ef1a039178f922de068b456709643c.png

修改后重启Docker

systemctl restart dockerdocker push 10.0.0.10:5000/test/busybox
c4597674587ce3863a444e2301b188e9.png

再次调用Registry API查看repositories:

curl http://localhost:5000/v2/_catalog
7e6d152c121e6195918ad6408a87148f.png

发现repositories已经有image了,就是我们刚才push到Registry中的。

再次访问:http://10.0.0.10:9090/repositories

2301915eee02c47f431cf06265176d7b.png

registry-frontend web UI也出现了我们刚才push的image。


到此,一个私有Docker Registry的整个安装过程已经介绍完了。通过上述步骤,我们看到Registry和Registry frontend在整个系统中扮演的角色非常分明,Registry提供Docker Image存储功能以及提供API服务,Registry frontend提供Web UI服务,使用户方便查看存储在Registry中的镜像文件。

参考:

https://github.com/docker/distribution

https://github.com/kwk/docker-registry-frontend

文章如有不妥之处,欢迎指正!谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值