作者:刘宾, thomas_liub@hotmail.com
请尊重作者著作权,转载请注明出处,谢谢!
一 创建Docker Swarm网络
Docker Swarm网络由管理节点和工作节点组成,通常情况需要最小3个管理节点和任意多个工作节点。同时,可以设置管理节点是否接受任务,从而使管理节点隔离出来只负责Docker集群工作。
1. 创建Manager节点
在28服务器上创建一个管理节点。
docker swarm init --advertise-addr 192.168.1.28
2. 创建工作节点
在27和29两个docker host上创建工作节点。
docker swarm join --token SWMTKN-1-4v9u5pahl5nfne1v88nw6hhe01n3994jzpiq68vmt3eskk0n8a-687qzxnn98c58cv0nw99t0drk 192.168.1.28:2377
3. 创建Overlay网络
Overlay网络用来连接跨主机容器。
docker network create --driver overlay --subnet 10.0.9.0/24 mycloud
4. 确认状态
最后查询节点状态,查询网络状态,查询服务状态。
docker node ls
docker network ls
docker service ls
二 微服务部署-Docker Swarm
1. 编写Dockerfile
将应用程序和platform-client库拷贝到容器内,开放内部8090 HTTP端口,供内部REST访问。
Dockerfile:
FROM ubuntu:14.05
RUN mkdir /source
WORKDIR /source
ADD ./asset-conn/ /source/
RUN rm /source/pl_lib
RUN mkdir /source/pl_lib
ADD ./platform-client/ /source/pl_lib/
RUN apt-get update
RUN apt-get install -y python-pip python-dev build-essential python-psycopg2
RUN pip install -r requirements.txt
USER root
RUN cp /usr/share/zoneinfo/PRC /etc/localtime
EXPOSE 8090
CMD python main.py
2. 构建Docker Image
Docker build:
docker build -t xxxx:nnnn/test/asset-conn .
3. push到企业库
推送构建好的image到企业容器库,方便其他节点部署。
docker login https://xxxx:nnnn
username: "admin"; password: "admin"
docker push xxxx:nnnn/test/asset-conn:latest
4. 在所有worker node上pull image
docker login https:/xxxx:nnnn
username: "admin"; password: "admin"
docker pull xxxx:nnnn/test/asset-conn:latest
5. 在lead node上创建服务
可以指定服务需要启动的应用实例个数,实例占用CPU,内存资源。注意,服务名字是云平台上服务间访问的唯一方式,一定要指定正确。
docker service create --replicas 1 --network mycloud --name asset-conn xxxx:nnnn/test/asset-conn:latest
6. 确认服务正确启动
在Lead节点上,运行如下命令:
docker service ls
docker service ps asset-conn
docker service inspect asset-conn
7. 查看log
两种方式:
- 登录容器,访问log文件 /source/logs/*.log
- 查询容器所在节点,在该节点查询容器log
- docker service ps xxx
- 登录到该docker host
- docker ps, 找到该容器
- docker logs -f 容器id
网友评论