DOCKER技术在推出后掀起了一阵容器化技术的热潮,容器化使得服务的部署变得极其简易,这为微服务和分布式计算提供了很大的便利。
为了把容器化技术的优点发挥到极致,docker公司先后推出了三大技术:docker-machine
,docker-compose
,docker-swarm
,可以说是几乎实现了容器化技术中所有可能需要的底层技术手段。
在使用go语言实现了判题引擎并打包好docker镜像后,就需要进行分布式判题的编写,这次就让我们手动实践,尝试使用docker的三大杀器来部署一个多机器构成的判题服务集群。
Docker三剑客组合,能够提供比较完善的面相服务器集群的Docker编排和部署方案,保障集群的正常运行,监控,迁移,升级,高可用性。
docker-compose是Docker提供的一个容器编排工具,帮助用户按照指定的顺序启动容器。由于 --link 参数对容器的启动顺序有要求,docker-compose工具可以通过在ymal文件中定义关联的应用容器,对容器的启动顺序进行优先级排序。
docker-compose.yml文件格式:(https://blog.csdn.net/qq_36148847/article/details/79427878)
version: "3"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
constraints: [node.role == manager]
vote:
image: dockersamples/examplevotingapp_vote:before
ports:
- 5000:80
networks:
- frontend
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
restart_policy:
condition: on-failure
result:
image: dockersamples/examplevotingapp_result:before
ports:
- 5001:80
networks:
- backend
depends_on:
- db
deploy:
replicas: 1
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
worker:
image: dockersamples/examplevotingapp_worke
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 1
labels: [APP=VOTING]
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
frontend:
backend:
volumes:
db-data:
root@ubuntu:~# apt-get install docker-compose
root@ubuntu:~# docker-compose version
docker-compose version 1.8.0, build unknown
docker-py version: 1.9.0
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2n 7 Dec 2017
创建和启动:
docker-compose up
启动:
docker-compose start
停止:
docker-compose stop
Docker Compose 是 Docker 官方编排( Orchestration) 项目 之一, 负 责快速的部署分布式应
用 。
https://github.com/docker/machine/releases
cp docker-machine-Linux-x86_64 /usr/local/bin/docker-machine
chmod 755 /usr/local/bin/docker-machine
docker-machine -v
docker-machine version 0.16.0, build 702c267f
https://github.com/docker/swarm/releases
tar -zxf swarm-v1.2.9-linux-x86_64.tgz
cp swarm /usr/local/bin/docker-swarm
docker-swarm -v
docker-swarm version 1.2.9 (527a849)
https://www.cnblogs.com/neptunemoon/p/6512121.html