Docker 入门之创建service(一)

在一个分布式应用中,我们把应用的不同层叫做“Services”。比如,一个视频共享应用,它包含存储数据到数据库的服务,用户上载后后台进行的视频解码服务,前端服务等等。

然而,一个服务只能在一个镜像中运行,这使得一个分布式应用可能会产生冲突,比如,端口冲突,容器复用等等。所以,docker-compose.yml文件应运而生。

一 、运行docker-compose.yml文件来创新一个service

前提

1,将本地要运行的某个容器镜像上传至自己的的docker仓库

如,我想要运行一个web服务,首先生成自己的web容器,该容器生成方法参照我的上一篇文章,然后给friendlyhello镜像打个标签

(标签名字得跟仓库中的用户名和路径一致,一般格式”usrname/path:tag”)如图

 

即上述操作完成了镜像上传。

2,接下来就是利用docker-compose文件创建一个web服务

 

将上述文件保存为docker-compose.yml,即在当前目录下含有

 

然后在当前目录下运行docker swarm init 将该机器配置成服务的管理者,

再运行docker stack deploy -c docker-compose.yml getstartedlab(其中getstartedlab是你给你的app服务取的名字,运行成功后,通过docker service ls 命令查看服务是否建立起来,然后打开浏览器连接到localhost查看我们的app服务的输出,或者运行curl -4 http://localhost 查看输出。

至此一个app服务已经建立好了。

3,扩展app服务

你可以反复修改你的docker-compose.yml文件,并运行命令docker stack deploy -c docker-compose.yml getstartedlab来扩展你的app服务。

4,卸载app服务和swarm

docker stack rm getstartedlab

docker swarm leave --force

 

二、理解Swarm集群

一个swarm是一组运行docker的机器并加入到集群中。在集群中,swarm管理者来执行机器中的命令,这些机器可以是物理的或者虚拟的,也被称作节点。

三、Swarm管理者的运行容器的调度策略

1,最大限度的利用每个机器

即每个机器极可能运行足够多的容器,当当前机器不足以满足调度队列中下一个容器所需资源时才更换另一个机器。

2,每个机器至少运行一个特定容器

即查询调度队列中容器数量,尽可能保证每个机器上都至少运行一个特定容器。

一个swarm集群有一个管理者和多个工作者,其中管理者能够认证其他机器来参与集群中的工作,工作者只提供工作能力而不具备认证其他机器的权限。

具体实现思路请参照我的下一篇文章,欢迎读者留下爪印共同探讨。本文参考了docker官网文件https://docs.docker.com/。

posted @ 2018-03-01 18:40  小丫小丫  阅读(12293)  评论(2编辑  收藏  举报