Open iliuyt opened 6 years ago
注意集群最好是3 5 7个主机,并且要有多个管理员,否则一旦管理员挂了就挂了(未测试)
## 集群初始化 docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100 ## 工作机假如 docker swarm join-token worker ## 管理加入 docker swarm join-token manager ## 加入集群 docker swarm join --token
## 查看网络 docker network ls ## 创建网络 docker network create --driver overlay swarm_test
注意这里要用ENTRYPOINT,否则容易覆盖
FROM alpine:3.2 ENV ETCD_VERSION 3.2.10 COPY etcd-v${ETCD_VERSION}-linux-amd64.tar.gz etcd.tar.gz RUN tar xzf etcd.tar.gz && \ mv etcd-*/etcd /bin/ && \ /bin/etcd --version && \ rm -rf etcd.tar.gz etcd- COPY ./start.sh /bin EXPOSE 2379 2380 ENTRYPOINT ["/bin/sh","/bin/start.sh"]
注意:报奇怪的错误时,第一时间想到是因为文件格式问题,通过VIM创建文件编写文件 通过docker service create,容器内无法获取宿主机IP,可以继续研究
#!/bin/bash LOCAL_IP=`ifconfig eth0|sed -n 2p|awk '{ print $2 }'|awk -F : '{ print $2 }'` NAME=`hostname -s` etcd --name $NAME \ --initial-advertise-peer-urls http://$LOCAL_IP:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://$LOCAL_IP:2379
### 注意discovery地址是http,https需要服务器支持 docker service create --name test \ --network etcd_network \ --publish 2379:2379 \ --publish 2380:2380 \ --replicas 3 \ --detach=true \ --env ETCD_DISCOVERY=http://discovery.etcd.io/b2e95d029b61e65ddd90421979efd7f6 \ registry.cn-hangzhou.aliyuncs.com/liuyt/etcd:sh
为什么--listen-peer-urls和--listen-client-urls在docker集群中必须写0.0.0.0,通信到底是什么样样子的 0.0.0.0代表缺省地址,代表的时候,请求无法处理时按0.0.0.0处理
在docker service create中,添加了replicas参数后无法使用名称做ip,原因是什么,为什么可以使用名称做路由
通过名称做路由参考文章http://blog.51cto.com/nosmoking/1962483
在docker service create中如何获取每一个容器的ip
脚本或node快速添加ssh登录
动态设置hostname,根据下面地址API教程 https://docs.docker.com/engine/reference/commandline/service_create/#create-services-using-templates
注册Docker论坛 http://dockone.io/
swarm
swarm 创建集群
注意集群最好是3 5 7个主机,并且要有多个管理员,否则一旦管理员挂了就挂了(未测试)
swarm 创建网络
etcd
构建镜像
注意这里要用ENTRYPOINT,否则容易覆盖
镜像脚本
注意:报奇怪的错误时,第一时间想到是因为文件格式问题,通过VIM创建文件编写文件 通过docker service create,容器内无法获取宿主机IP,可以继续研究
swarm部署
confd
安装confd
根据etcd更新nginx配置
部署应用
swarm 创建应用
遗留问题
etcd
为什么--listen-peer-urls和--listen-client-urls在docker集群中必须写0.0.0.0,通信到底是什么样样子的 0.0.0.0代表缺省地址,代表的时候,请求无法处理时按0.0.0.0处理
docker service
在docker service create中,添加了replicas参数后无法使用名称做ip,原因是什么,为什么可以使用名称做路由
通过名称做路由参考文章http://blog.51cto.com/nosmoking/1962483
在docker service create中如何获取每一个容器的ip
需要做的
脚本或node快速添加ssh登录
动态设置hostname,根据下面地址API教程 https://docs.docker.com/engine/reference/commandline/service_create/#create-services-using-templates
注册Docker论坛 http://dockone.io/
未完待编辑