安装Docker Engine 社区版本
在您选择的平台上查找Docker Engine社区版本的安装说明。
创建你的Swarm
运行docker swarm init
以在节点上创建一个群。
部署您的应用
运行docker stack deploy -c docker-compose.yml getstartedlab
以在云托管群上部署应用程序。
docker stack deploy -c docker-compose.yml getstartedlab
Creating network getstartedlab_webnet
Creating service getstartedlab_web
Creating service getstartedlab_visualizer
Creating service getstartedlab_redis
应用现在正在您的云服务提供商上运行。
运行一些SWARM命令来验证部署
您可以使用swarm命令行来浏览和管理swarm。以下是一些现在应该看起来很熟悉的例子:
- 使用
docker node ls
到列表中的节点在群。
[getstartedlab] ~ $ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
n2bsny0r2b8fey6013kwnom3m * ip-172-31-20-217.us-west-1.compute.internal Ready Active Leader
- 使用
docker service ls
列出服务。
[getstartedlab] ~/sandbox/getstart $ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ioipby1vcxzm getstartedlab_redis replicated 0/1 redis:latest *:6379->6379/tcp
u5cxv7ppv5o0 getstartedlab_visualizer replicated 0/1 dockersamples/visualizer:stable *:8080->8080/tcp
vy7n2piyqrtr getstartedlab_web replicated 5/5 sam/getstarted:part6 *:80->80/tcp
- 使用
docker service ps <service>
查看任务的服务。
[getstartedlab] ~/sandbox/getstart $ docker service ps vy7n2piyqrtr
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
qrcd4a9lvjel getstartedlab_web.1 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 20 seconds ago
sknya8t4m51u getstartedlab_web.2 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 17 seconds ago
ia730lfnrslg getstartedlab_web.3 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 21 seconds ago
1edaa97h9u4k getstartedlab_web.4 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 21 seconds ago
uh64ez6ahuew getstartedlab_web.5 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 22 seconds ago
在云服务提供商机器上打开服务端口
此时,您的应用程序将作为swarm部署在云提供程序服务器上,正如您刚刚运行的docker
命令所查看的那样。但是,您仍需要在云服务器上打开端口,以便:
-
如果使用许多节点,则允许
redis
服务和web
服务之间的通信 -
允许
web
服务的入站流量分发到工作节点上,以便可以从Web浏览器访问Hello World和Visualizer。 -
开放ssh的22端口(可能您的云服务提供商已经提前给你设置好了)
这些是您需要为每个服务公开的端口:
服务 | 类型 | 协议 | 港口 |
---|---|---|---|
web |
HTTP | TCP | 80 |
visualizer |
HTTP | TCP | 8080 |
redis |
TCP | TCP | 6379 |
执行此操作的方法因您的云提供商而异。
这里我们使用Amazon Web Services(AWS)作为示例。
redis服务如何持久化数据呢?
要使
redis
服务正常运行,您需要用ssh
进入swarm管理器
正在运行的云服务器,运行之前在/home/docker/
下创建data/
目录,再执行docker stack deploy
。另一种选择是在docker-stack.yml
文件中将数据路径更改为manager
服务器上预先存在的路径。此示例不包括此步骤,因此web
服务显示redis
服务未启动。
迭代和清理
-
通过更改
docker-compose.yml
文件来扩展应用程序,并使用docker stack deploy
命令即时重新部署。 -
你可以拆掉堆栈
docker stack rm
。例如:docker stack rm getstartedlab
与您在本地Docker机器VM上运行swarm的情况不同,无论您是否关闭你的本地主机,您的swarm及其上部署的任何应用程序都将继续在云服务器上运行。
网友评论