Docker 1.12 Swarm Mode集群实战(过渡篇)之Registry和Image

过渡篇 RegistryImage

第一章  Docker 1.12 Swarm Mode集群实战(第一章) 中我们在单节点环境下运行docker币应用, 所以我们build出来的Docker币应用的image是保存在本机的。

推荐阅读:Docker 1.12 Swarm Mode集群实战(第二章)

现在我们要使用Swarm集群环境,docker币服务会分布在很多不同的服务器节点上, 难道每个节点都要build镜像, 或者要把image拷贝到别的节点上?

当然不用, 这个时候我们要用到本地镜像仓库docker private registry用于存取image。每个节点从registry拉取需要的image就可以了。

Note 当然还有别的方法, 可以使用docker Hub公用的镜像仓库, registry是一种开源的本地镜像仓库服务.

部署私有镜像仓库

创建registry服务, 发布5000端口.

# docker service create --name registry --publish 5000:5000 registry:2

镜像比较大, 可能要等很久才能拉取成功.

验证service部署成功后, 确定registry服务工作正常

# docker service ls

ID            NAME      REPLICAS  IMAGE       COMMAND

eqicwcgv877q  registry  1/1       registry:2

# curl localhost:5000/v2/_catalog

{"repositories":[]}

返回{“repositories”:[]} 说明registry服务工作正常.

Note 注意我们只启动了一个registry副本容器, 根据docker swarm集群的端口发布服务特性, swarm集群所有节点都会自动发布本机的5000端口。
对应到registry, 不管你在哪个节点上执行curl localhost:5000/v2/_catalog, 都是可以访问到registry服务的.所以你不用关心这个registry跑在那个节点上,很好很强大~

测试本地镜像仓库

有了本地registry, 现在我们推送一个测试镜像到本机镜像仓库, 测试下registry服务是否可用.

# docker images

REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE

dockercoins_webui    latest              c2d09bb0c442        47 hours ago        212.2 MB

dockercoins_rng      latest              ff1d886f2fa3        47 hours ago        83.53 MB

dockercoins_hasher   latest              9d361dbaf589        47 hours ago        310.6 MB

dockercoins_worker   latest              bef5d2dc4bd0        47 hours ago        80.5 MB

alpine               latest              4e38e38c8ce0        5 weeks ago         4.795 MB

redis                latest              4465e4bcad80        6 weeks ago         185.7 MB

查看下我们现有的镜像, 选取一个例如alpine。

如果想把alpine镜像推送到本地registry,需要先tag这个镜像的名字成<registry>/<image name>:<tag>

# docker tag alpine localhost:5000/busybox

# docker images

REPOSITORY                  TAG          IMAGE ID     CREATED       SIZE

...

alpine                              latest      4e38e38c8ce0   5 weeks ago         4.795 MB

localhost:5000/busybox   latest    4e38e38c8ce0    5 weeks ago         4.795 MB

...

下面就可以使用docker push <image name>推送image了.

# docker push localhost:5000/busybox

The push refers to a repository [localhost:5000/busybox]

4fe15f8d0ae6: Pushed

latest: digest: sha256:dc89ce8401da81f24f7ba3f0ab2914ed9013608bdba0b7e7e5d964817067dc06 size: 528

push成功后, 可以调用registry API查看registry中的镜像

# curl localhost:5000/v2/_catalog

{"repositories":["busybox"]}

可以看到busybox镜像, 已经在我们的本地镜像库中了。

推送docker币镜像到本地镜像库

绕了一大圈, 终于回到我们的docker币应用了, 让我们来挖更多的docker币吧. 忘记docker币应用的同学请参见本系列的第一章Docker 1.12 Swarm Mode集群实战(第一章).

现在我们要做的是, 把build完成的docker币的镜像推送到本地registry中, 这样我们用swram集群在多个节点部署应用的时候就不需要再次build,直接从本地镜像库中拉取镜像即可.

具体步骤:

  • build docker币镜像(在第一章我们已经在node01上build过了, 你也可以直接使用这些镜像.)
  • retag镜像名字为localhost:5000/<service name>:<tag>名字
  • push镜像到我们的本地镜像库

我们的docker币应用一共需要5个service(hasher, rng, webui, worker, redis), redis可以不用build直接从官方拉取的就行。

# docker images REPOSITORY               TAG                 IMAGE ID            CREATED             SIZEdockercoins_webui        latest         
c2d09bb0c442        47 hours ago        212.2 MBdockercoins_rng          latest              ff1d886f2fa3        47 hours ago        83.53 
MBdockercoins_hasher       latest              9d361dbaf589        47 hours ago        310.6 MBdockercoins_worker       latest   
 bef5d2dc4bd0        2 days ago          80.5 MB

上面是第一章我们build好的.

下面我们会以hasher为例演示下push的过程.

# 切换到我们应用的docker-compose file目录

# cd orchestration-workshop/dockercoins/

# build hasher应用的镜像

# docker-compose build hasher

# retag镜像名

# docker tag dockercoins_hasher localhost:5000/dockercoins_hasher:v0.1

# 推送镜像

# docker push localhost:5000/dockercoins_hasher

# 验证推送结果

# curl localhost:5000/v2/_catalog

{"repositories":["busybox","dockercoins_hasher"]}

hasher推送完了, 你可以使用相同的步骤完成rng, webui, worker的推送.

简单起见, 你可以使用下面的一段命令, 完成整个过程, 直接贴到命令窗口执行就可以了.

DOCKER_REGISTRY=localhost:5000

TAG=v0.1

for SERVICE in hasher rng webui worker; do

docker-compose build $SERVICE

docker tag dockercoins_$SERVICE $DOCKER_REGISTRY/dockercoins_$SERVICE:$TAG

docker push $DOCKER_REGISTRY/dockercoins_$SERVICE

done

验证你的镜像库中内容:

# curl localhost:5000/v2/_catalog

{"repositories":["busybox","dockercoins_hasher","dockercoins_rng","dockercoins_webui","dockercoins_worker"]}

至此Swarm环境中Docker币应用的image已全部准备完毕,接下来我们会演示如何在Swarm集群环境中多节点快速部署Docker币应用,造出更多的Docker币。

敬请期待!

本文:Docker 1.12 Swarm Mode集群实战(过渡篇)之Registry和Image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Docker搭建Swarm集群的步骤如下: 1. 在每个节点上安装Docker; 2. 选择一个节点作为Swarm Manager,运行以下命令初始化Swarm: ``` docker swarm init --advertise-addr <MANAGER-IP> ``` 这将创建一个Swarm集群,并在当前节点上启动Swarm Manager服务。 3. 如果你想将其他节点加入集群,可以在这些节点上运行以下命令: ``` docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT> ``` 这将加入节点到Swarm集群中,其中TOKEN是Swarm Manager生成的一个唯一标识符,MANAGER-IP是Swarm Manager节点的IP地址,PORT是Swarm Manager服务的端口号。 4. 确认所有节点都已经成功加入Swarm集群: ``` docker node ls ``` 这将列出所有节点的信息。 5. 在Swarm Manager节点上创建一个Swarm服务: ``` docker service create --name <SERVICE-NAME> <IMAGE> ``` 这将创建一个Swarm服务,其中SERVICE-NAME是服务的名称,IMAGE是服务所使用的Docker镜像。 6. 确认服务已经成功运行: ``` docker service ls ``` 这将列出所有运行的Swarm服务。 7. 如果你需要扩展服务的副本数,可以运行以下命令: ``` docker service scale <SERVICE-NAME>=<NUMBER-OF-REPLICAS> ``` 这将增加服务的副本数,其中NUMBER-OF-REPLICAS是要添加的副本数。 8. 如果你需要删除Swarm服务,可以运行以下命令: ``` docker service rm <SERVICE-NAME> ``` 这将删除服务。 这些是使用Docker搭建Swarm集群的基本步骤。Swarm集群的配置和管理有很多选项,可以根据需要进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值