作者:劉賓, thomas_liub@hotmail.com
請(qǐng)尊重作者著作權(quán)微渠,轉(zhuǎn)載請(qǐng)注明出處霎苗,謝謝!
一 創(chuàng)建Docker Swarm網(wǎng)絡(luò)
Docker Swarm網(wǎng)絡(luò)由管理節(jié)點(diǎn)和工作節(jié)點(diǎn)組成已艰,通常情況需要最小3個(gè)管理節(jié)點(diǎn)和任意多個(gè)工作節(jié)點(diǎn)痊末。同時(shí),可以設(shè)置管理節(jié)點(diǎn)是否接受任務(wù)哩掺,從而使管理節(jié)點(diǎn)隔離出來只負(fù)責(zé)Docker集群工作凿叠。
1. 創(chuàng)建Manager節(jié)點(diǎn)
在28服務(wù)器上創(chuàng)建一個(gè)管理節(jié)點(diǎn)。
docker swarm init --advertise-addr 192.168.1.28
2. 創(chuàng)建工作節(jié)點(diǎn)
在27和29兩個(gè)docker host上創(chuàng)建工作節(jié)點(diǎn)。
docker swarm join --token SWMTKN-1-4v9u5pahl5nfne1v88nw6hhe01n3994jzpiq68vmt3eskk0n8a-687qzxnn98c58cv0nw99t0drk 192.168.1.28:2377
3. 創(chuàng)建Overlay網(wǎng)絡(luò)
Overlay網(wǎng)絡(luò)用來連接跨主機(jī)容器盒件。
docker network create --driver overlay --subnet 10.0.9.0/24 mycloud
4. 確認(rèn)狀態(tài)
最后查詢節(jié)點(diǎn)狀態(tài)蹬碧,查詢網(wǎng)絡(luò)狀態(tài),查詢服務(wù)狀態(tài)履恩。
docker node ls
docker network ls
docker service ls
二 微服務(wù)部署-Docker Swarm
1. 編寫Dockerfile
將應(yīng)用程序和platform-client庫(kù)拷貝到容器內(nèi)锰茉,開放內(nèi)部8090 HTTP端口,供內(nèi)部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. 構(gòu)建Docker Image
Docker build:
docker build -t xxxx:nnnn/test/asset-conn .
3. push到企業(yè)庫(kù)
推送構(gòu)建好的image到企業(yè)容器庫(kù)飒筑,方便其他節(jié)點(diǎn)部署。
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上創(chuàng)建服務(wù)
可以指定服務(wù)需要啟動(dòng)的應(yīng)用實(shí)例個(gè)數(shù)绽昏,實(shí)例占用CPU协屡,內(nèi)存資源。注意全谤,服務(wù)名字是云平臺(tái)上服務(wù)間訪問的唯一方式肤晓,一定要指定正確。
docker service create --replicas 1 --network mycloud --name asset-conn xxxx:nnnn/test/asset-conn:latest
6. 確認(rèn)服務(wù)正確啟動(dòng)
在Lead節(jié)點(diǎn)上认然,運(yùn)行如下命令:
docker service ls
docker service ps asset-conn
docker service inspect asset-conn
7. 查看log
兩種方式:
- 登錄容器补憾,訪問log文件 /source/logs/*.log
- 查詢?nèi)萜魉诠?jié)點(diǎn),在該節(jié)點(diǎn)查詢?nèi)萜鱨og
- docker service ps xxx
- 登錄到該docker host
- docker ps, 找到該容器
- docker logs -f 容器id