李明
|
这次按照上次讲解,做个多机器之前的通信 flask-redis 和redis 在不同的机器上
vagrant ssh docker-node1 ip a
vagrant ssh docker-node2 ip a
#docker-node1 里面ping 172.28.128.4 直接访问node2ping 172.28.128.4#docker-node2 里面ping 172.28.128.3 直接访问node1ping 172.28.128.3
etcd的2台机器安装
sudo yum -y install wget wget https://github.com/coreos/etcd/releases/download/v3.0.12/etcd-v3.0.12-linux-amd64.tar.gz tar zxvf etcd-v3.0.12-linux-amd64.tar.gzcd etcd-v3.0.12-linux-amd64#查看ip地址 172.28.128.3ip a
#注意ip地址的修改,不同的机器可能不相同。通过ip a查看nohup ./etcd --name docker-node1 --initial-advertise-peer-urls http://172.28.128.3:2380 \ --listen-peer-urls http://172.28.128.3:2380 \ --listen-client-urls http://172.28.128.3:2379,http://127.0.0.1:2379 \ --advertise-client-urls http://172.28.128.3:2379 \ --initial-cluster-token etcd-cluster \ --initial-cluster docker-node1=http://172.28.128.3:2380,docker-node2=http://172.28.128.4:2380 \ --initial-cluster-state new&
sudo yum -y install wget wget https://github.com/coreos/etcd/releases/download/v3.0.12/etcd-v3.0.12-linux-amd64.tar.gz tar zxvf etcd-v3.0.12-linux-amd64.tar.gzcd etcd-v3.0.12-linux-amd64#查看ip地址 172.28.128.4ip a
#注意ip地址的修改,不同的机器可能不相同。通过ip a查看nohup ./etcd --name docker-node1 --initial-advertise-peer-urls http://172.28.128.4:2380 \ --listen-peer-urls http://172.28.128.4:2380 \ --listen-client-urls http://172.28.128.4:2379,http://127.0.0.1:2379 \ --advertise-client-urls http://172.28.128.4:2379 \ --initial-cluster-token etcd-cluster \ --initial-cluster docker-node1=http://172.28.128.3:2380,docker-node2=http://172.28.128.4:2380 \ --initial-cluster-state new&
./etcdctl cluster-heallth sudo service docker stop
sudo /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://172.28.128.3:2379 --cluster-advertise=172.28.128.3:2375&exitvagrant ssh docker-node1 sudo docker network ls
sudo /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://172.28.128.4:2379 --cluster-advertise=172.28.128.4:2375&exitvagrant ssh docker-node2 sudo docker network ls
sudo docker network create -d overlay demo sudo docker network ls
#docker-node1创建了overlay网络后,node2也创建了。这是为什么呢?其实这就是etcd帮咱们做的。sudo docker network ls
sudo docker network inspect demo 创建连接demo网络的容器
sudo docker run -d --name tes11t1--net demo busybox sh -c "while true; do sleep 3600; done"sudo docker ps image.png
#说有相同容器已经存在了,不允许创建。如果在同一台docker机器上不允许名称一样的,说明这2个docker-node1 和docker-node2 已经在同一个网络空间内了sudo docker run -d --name tes11t1--net demo busybox sh -c "while true; do sleep 3600; done"#更改一个名称,可以成功创建sudo docker run -d --natme test111--net demo busybox sh -c "while true; do sleep 3600; done"sudo docker ps
sudo docker exec tes11t1 ip a
sudo docker exec test111 ip a image.png
sudo docker network inspect demo
sudo docker exec test111 ping 10.0.0.2 sudo docker exec test111 ping tes11t1 docker-node1 sudo docker exec tes11t1 ping 10.0.0.3 sudo docker exec tes11t1 ping test111 PS:本次通过第三方工具etcd分布式的方式完成2台机器,2个容器组件网络,实现相互的访问,这里只是通过ping的方式,如果按照上次说的 flask-redis,可以一台是redis 一台是flask 应该也是可以通信的。多机的方式基本就是这样。 |
2018-09-14 01:31:44