基础全面-docker网络模式
目录
一、 网络模式介绍
| 模式 | 简介 | 使用 |
|---|---|---|
| birdge | 为每一个容器分配、设置IP等。并将容器连接到docker0。虚拟网桥,默认为该模式 | – network bridege默认使用docker0 |
| host | 容器将不会虚拟出自己的网卡,配置自己的IP等。而是使用宿主机的IP和端口 | – network host |
| none | 容器有独立的network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接、IP等 | – network none |
| container | 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等 | – network container:name或者容器ID指定 |
1. bridge 模式
Docker的默认模式,它会在docker容器启动时候,自动配置好自己的网络信息,同一宿主机的所有容器都在一个网络下,彼此间可以通信。利用宿主机的网卡进行通信,因为涉及到网络转换,所以会造成资源消耗,网络效率会低。

2. host模式
- host模式并没有为容器创建隔离的网络环境,该模式下容器会和宿主机共享同一个网络namespace,所以容器与宿主机都会使用宿主机的网络接口实现与外界的通信。
- 容器的IP即宿主机的IP
- host模式下的容器没有隔离的network namespace
容器使用宿主机的ip地址进行通信。
特点:容器和宿主机共享网络。

3. container模式
新创建的容器间使用,使用已创建的容器网络,类似一个局域网。
特点:容器和容器共享网络

4. none模式
不做任何网络的配置,可以最大限度的定制化。
不提供网络服务,容器启动后无网络连接。

5. overlay模式
容器彼此不在同一网络,而且能互相通行。

二、使用不同的模式创建容器(host、default、bridge)
1. 以 host 网路模式运行容器
# docker run -itd --name cctest_host --network host sp2x86:jcc /bin/bash
- 查看该容器的网络模式
# docker inspect edc8b49d19b3 |grep -i network
"NetworkMode": "host",
"NetworkSettings": {
"Networks": {
"NetworkID": "f91c07c56735131f638ba62e6b751ce24288b229faa5b01403cf302348ec60ef",
- 查看容器 IP
# docker exec -it edc8b49d19b3 hostname -I
10.1.160.101 192.168.122.1 172.17.0.1
宿主机ip
# hostname -I
10.1.160.101 192.168.122.1 172.17.0.1
2. 以bridge网络模式运行容器
# docker run -itd --name cctest_bridge --network bridge sp2x86:jcc /bin/bash
- 查看该容器的网络模式
# docker inspect 0f2de48362d3 |grep -i network
"NetworkMode": "bridge",
"NetworkSettings": {
"Networks": {
"NetworkID": "12906b056567d4bd51b127aedf2a6e825245909a579bfce97920a6a36dd2c0f3",
- 查看容器IP
[root@localhost ~]# docker exec -it 0f2de48362d3 hostname -I
172.17.0.2
宿主机ip
# hostname -I
10.1.160.101 192.168.122.1 172.17.0.1
3. 以默认网络模式运行容器
# docker run -it --name cctest_default sp2x86:jcc /bin/bash
- 查看该容器的网络模式
# docker inspect 055fa98f2c25 |grep -i network
"NetworkMode": "default",
"NetworkSettings": {
"Networks": {
"NetworkID": "12906b056567d4bd51b127aedf2a6e825245909a579bfce97920a6a36dd2c0f3",
- 查看容器IP
# docker exec -it 055fa98f2c25 hostname -I
172.17.0.3
# hostname -I
10.1.160.101 192.168.122.1 172.17.0.1
三、 宿主机重启前后容器自启动以及网络情况分析
指路+留坑
https://www.cnblogs.com/comecc/p/16738513.html
四、 相关命令
1. docker network ls
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
eb533f70f5b7 bridge bridge local
20e4ec674591 host host local
99c23f4eb526 none null local
2. docker network ls -f
[root@localhost ~]# docker network ls -f driver=bridge
NETWORK ID NAME DRIVER SCOPE
eb533f70f5b7 bridge bridge local
[root@localhost ~]# docker network ls -f driver=host
NETWORK ID NAME DRIVER SCOPE
20e4ec674591 host host local
3. docker network ls -q
[root@localhost ~]# docker network ls -q
eb533f70f5b7
20e4ec674591
99c23f4eb526

浙公网安备 33010602011771号