实现在本机使用docker machine实现swarm创建和节点管理。
准备:
本机docker machine
ecs-swarm-1
ecs-swarm-2
对已安装docker的ECS ecs-swarm-1实例进行自定义镜像制作,阿里的管理控制台一键完成
再购买一台ECS实例,采用刚刚制作的自定义镜像,命名为es-swarm-2
在本机安装docker machine,我的系统是Mac OS,直接下载dmg安装
如果需要安装最新版docker,参考这篇文章。
1、设置ssh免密登录
将本机公钥配置到es-swarm-1的authorized_key中
ssh-copy-id root@xxx.xxx.xxx.xxx
把xxx.xxx.xxx.xxx分别替换为ecs-swarm-1的ip地址。如果上述命令不可用,执行下面的命令:
cat ~/.ssh/id_rsa.pub | ssh root@139.196.100.224 "umask 077; mkdir -p .ssh ; cat >> .ssh/authorized_keys"
FYI
2、关联远程node创建machine实例
通过docker-machine的generic实现分别关联远程ecs-swarm-1、ecs-swarm-2创建machine实例:
docker-machine create --driver generic \
--generic-ip-address=123.56.164.29 \
--generic-ssh-user=root \
--generic-ssh-key ~/.ssh/id_rsa \
ecs-swarm-1
将上述ip地址替换即可。使用下列命令看是否成功。
docker-machine ls
如1、2步骤,将ecs-swarm-2配置好。
swarm初始化,es-swarm-2做manager:
docker-machine ssh ecs-swarm-2
登录到ecs-swarm-2。
然后执行manager的创建命令:
docker swarm init --advertise-addr 10.170.232.185
返回的token一定要记住!当添加节点到manager时需要用到token。
退出ecs-swarm-2,登录ecs-swarm-1,执行:
docker swarm join \
--token SWMTKN-1-5jkrh4prvhqr8cuxtdls855x9m6eh4ctelrv54x57l7k93l9ui-d1o513j050bipt3jv6d3ibh9o \
10.170.232.185:2377
结果:
此时节点就已经作为worker存在了。退出worker(ecs-swarm-1),登录manager(ecs-swarm-2)节点。通过下列命令查看节点状态:
操作成功。
如果我们在dockerHub有自己的仓库并且push过镜像的话,那么就可以在manager节点开启服务。
docker service create -p 3000:3000 --name webservice tcl012812/webservice
查看服务信息明细: