当你没有刚刚学习Docker的时候有没有想过,docker容器是隔离滴,那么网络自然也是隔离滴喽,网络都隔离喽,容器是怎么通信的呢,在原始的Docker版本呢编写Dockerfile时可以使用link关键字指出要通信的容器,或者在docker run的时候通过–link指定要通信的容器,不过Docker官方都认为这个关键字有点不太好用所以过时了~再后来呀我们可以使用Docker network create进行自定义网络,容器想要通信的话可以使用network网络类型直接使用本机网络运行容器,不过这个同一个镜像在一台宿主机就只能运行一个容器喽,容器最重要的隔离特性就没有意义了~但是不要慌我们还可以使用Docker swarm提供的overlay网络类型,使用起来也是Very的easy呀~
#初始化docker swarm
docker swarm init --advertise-addr 本机IP
初始化之后,你的主机就是一个Docker集群的管理节点啦,虽然这个集群只有你这么一个节点
#创建overlay网络
docker network create -d overlay alibaba-overlay(自定义的网络名称哦)
#在管理节点获取加入集群的token
docker swarm join-token worker
然后将控制台输出的命令在要加入的节点上执行以下就加入啦~
在Docker compose的v3版本之后Docker推出了Docker stack,所以你可以把docker stack当作Docker compose的进阶版啦~
version: "3.0"
services:
cloud-consumer:
image: cloud-consumer:v0.1
container_name: cloud-consumer
ports:
- "83:83"
volumes:
- /docker_volumes/cloud-consumer:/var/log
environment:
active: test
networks:
- alibaba-overlay
depends_on:
- cloud-provider9001
- cloud-provider9002
deploy:
replicas:
update_config:
parallelism:
delay: 10s
restart_policy:
condition: on-failure
cloud-provider9001:
image: cloud-provider9001:v0.1
container_name: cloud-provider9001
ports:
- "9001:9001"
volumes:
- /docker_volumes/cloud-provider9001:/var/log
environment:
active: test
networks:
- alibaba-overlay
deploy:
replicas:
update_config:
parallelism:
delay: 10s
restart_policy:
condition: on-failure
cloud-provider9002:
image: cloud-provider9001:v0.1
container_name: cloud-provider9002
ports:
- "9002:9001"
volumes:
- /docker_volumes/cloud-provider9002:/var/log
environment:
active: test
networks:
- alibaba-overlay
deploy:
replicas:
update_config:
parallelism:
delay: 10s
restart_policy:
condition: on-failure
networks:
alibaba-overlay:
external: true
对比上一篇的docker-compose.yml文件想必你已经看出来来了区别,没错就是多了docker compose v3语法中的deploy关键字,deploy可以指定部署几个分片,更新策略,失败了如何重启等等~。
启动当然也是一行命令就直接启动了~
# docker stack deploy -c 配置文件 自定义stack名称
docker stack deploy -c docker-compose.yml alibaba-service
额有点累了剩下的查看stack以及service的命令不想写了~
/sbin/ip route|awk ‘/src/ { print $9 }’ | grep 172