一、Docker支持4种网络模式
Bridge(默认)--network默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中;IP地址段是172.17.0.1/16 独立名称空间 docker0桥,虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
host容器不会获得一个独立的network namespace,而是与宿主机共用一个。 共享物理机的名称空间
3、none获取独立的network namespace,但不为容器进行任何网络配置,只有lo回环网络,封闭的网络是最安全的。
4、 container与指定的容器使用同一个network namespace,网卡配置也都是相同的。
二、默认网络
1、Docker默认支持3中网络
# docker network ls
![c388b7b81dc0dbb0f90cfdf924c78933.png](https://img-blog.csdnimg.cn/img_convert/c388b7b81dc0dbb0f90cfdf924c78933.png)
[root@i-v5naa31x ~]# ip a
![c4470c6589f1dbe9519bf58e735789e8.png](https://img-blog.csdnimg.cn/img_convert/c4470c6589f1dbe9519bf58e735789e8.png)
红框部分就是容器网络
#docker ps
![4e530c2bf3e5b7317cd49ce46fc8f677.png](https://img-blog.csdnimg.cn/img_convert/4e530c2bf3e5b7317cd49ce46fc8f677.png)
三、创建网络
host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默认设置。
container模式:使用 --net=container:NAME_or_ID 指定。
1、默认容器网络(Bridge)
docker run --name a1 -it --rm busybox:latest
![b791055b394aec177972b9d2a8eac3c3.png](https://img-blog.csdnimg.cn/img_convert/b791055b394aec177972b9d2a8eac3c3.png)
用--network
[root@rancher ~]# docker run --name a1 -it --network bridge --rm busybox:latest
![5a92a0baa1b02579ca25f3b5e0694dc0.png](https://img-blog.csdnimg.cn/img_convert/5a92a0baa1b02579ca25f3b5e0694dc0.png)
发现默认模式就是--network
2、none模式(封闭式容器)
docker run --name a1 -it --network none --rm busybox:latest
![e93e49bf9f5f3d42f0c494cb6f7125e0.png](https://img-blog.csdnimg.cn/img_convert/e93e49bf9f5f3d42f0c494cb6f7125e0.png)
这里设置一个主机名
docker run --name a1 -it --network bridge -h a1.wolf.com --rm busybox:latest
![74c6a053c92923c5fc12135b7156abfa.png](https://img-blog.csdnimg.cn/img_convert/74c6a053c92923c5fc12135b7156abfa.png)
![ff509ea0ea9cbe7f7c09cdd91a56d3b9.png](https://img-blog.csdnimg.cn/img_convert/ff509ea0ea9cbe7f7c09cdd91a56d3b9.png)
设置一下dns
docker run --name a1 -it --network bridge -h a1.wolf.com --dns 8.8.8.8 --rm busybox:latest
![d7b6a02ef04623f037141c87817fd7c7.png](https://img-blog.csdnimg.cn/img_convert/d7b6a02ef04623f037141c87817fd7c7.png)
docker run --name a1 -it --network bridge -h a1.wolf.com --dns 8.8.8.8 --dns-search ilinux.io --rm busybox:latest
![a7a643d06888ddc4b1d2f397acf21de3.png](https://img-blog.csdnimg.cn/img_convert/a7a643d06888ddc4b1d2f397acf21de3.png)
注入hosts信息
![8e542c9cf4b235fcf0e9590dda7efda5.png](https://img-blog.csdnimg.cn/img_convert/8e542c9cf4b235fcf0e9590dda7efda5.png)
3、container
这种模式网络是共享的,文件系统是隔离的
[root@rancher ~]# docker run --name c1 -it --rm busybox
![be204aae49a2cb436ffc723fcbae16c6.png](https://img-blog.csdnimg.cn/img_convert/be204aae49a2cb436ffc723fcbae16c6.png)
[root@i-v5naa31x ~]# docker run --name c2 --network container:c1 -it --rm busybox
![e72afe2ded612f3c72121b15fd8635bf.png](https://img-blog.csdnimg.cn/img_convert/e72afe2ded612f3c72121b15fd8635bf.png)
可以看到两个容易共享网络
4、Host
[root@rancher ~]# docker run --name c2 --network host -it --rm busybox
![17f725cc6e294e3fad49d54a5affc018.png](https://img-blog.csdnimg.cn/img_convert/17f725cc6e294e3fad49d54a5affc018.png)
可以看到容器的网路和主机的网络一样
四、修改默认docker0 ip段
docker修改默认docker0 ipcat /etc/docker/daemon.json
在此文件中添加如下一行,然后重启服务。
{
"bip": "192.168.100.1/24"
}
systemctl restart docker
当然还可以加入其他信息,如dns ,默认网关等
{
"bip": "192.168.102.1/24",
"mtu": 1500,
"default-gateway": "192.168.102.1",
"dns": ["dns1","dns2"]
}
五、远程管理其他docker机器
远程管理其他docker机器
cat /etc/docker/daemon.json 在此文件中添加如下一行,然后重启服务。
{
"bip": "192.168.200.1/24"
"hosts": ["tcp://0.0.0.02375","unix:///var/run/docker.sock"]
}
systemctl restart docker
ss -tnl看看2375是否启动
然后去另一台机器docker -H IP:2375 ps