1. 网络的种类
[root@docker2 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
e23f0eb8c7c4 bridge bridge local
f6fb45870031 host host local
ecf0708d809e none null local
模式 | 解释 |
---|---|
none | 无网络模式 |
bridge | 默认模式,相当于nat |
host | 公用宿主机 |
container | 与其他的容器公用 |
docker run -d --network=host nginx
docker run -d --network=none nginx
默认,不写也是这样
docker run -d --network=bridge nginx
2. 演示 跨主机网络
2.1 -maxvlan
docker network create --driver macvlan --subnet=100.0.0.0/24 --gateway=100.0.0.254 -o parent=eth0 macvlan_1
docker run -it --network macvlan_1 --ip=10.0.0.11 oldguo/centos6.9-sshd:v1.0 /bin/bash
docker run -it --network macvlan_1 --ip=10.0.0.12 centos:6.9 /bin/bash
这个模式会出现不同主机之间的ip地址分配出现重复
2.2 -overlay 解决ip分配会重复问题
启动 consul 服务,实现网络的统一配置管理
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
docker1 2
vim /etc/docker/daemon.json
{
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
"cluster-store": "consul://192.168.80.201:8500",
"cluster-advertise": "192.168.80.201:2376"
}
vim /etc/docker/daemon.json
{
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
"cluster-store": "consul://192.168.201:8500",
"cluster-advertise": "192.168.202:2376"
}
创建overlay网络
docker network create -d overlay --subnet 172.116.0.0/24 --gateway 172.11.0.254 overlay
两边启动容器测试
docker run -it --network overlay busybox /bin/sh
每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网
vim /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --cluster-store=consul://192.168.80.201:8500 --cluster-advertise=192.168.80.201:2376