Docker网络模式
# 网络常用命令
# 1. 一般网络常用命令
命令 | 功能 | 说明 |
---|---|---|
ipconfig | 查看IP地址信息 | 适用于windwos |
ifconfig | 查看IP地址信息 | 适用于linux |
ip a | 查看IP地址信息 | 适用于linux |
ping | 网络连通性测试 | 适用于windows&linux |
telnet | 端口连通性测试 | 适用于windows&linux |
traceroute | 路径探测跟踪 | 适用于linux |
tracepath | 路径探测跟踪 | 适用于linux |
tracert | 路径探测跟踪 | 适用于WINDOWS |
route print | 查看路由表 | 适用于WINDOWS |
route | 显示当前路由 | 适用于linux |
curl | 文件传输工具 | 适用于linux |
wget | 下载网络文件 | 适用于linux |
# 2. docker 网络常用命令
命令 | 功能说明 |
---|---|
docker network ls | 查看网络 |
docker network inspect bridge | 查看网络源数据 |
docker network create -d bridge mybridge | 创建一个自定义的网络mybridge |
docker network rm mybridge | 删除mybridge网络 |
# docker的网络模式
默认情况下,
docker
的网络有3
种模式,分别为bridge
、host
和none
。此外,还有container
模式和自定义模式。[root@newdocker2 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 2e4fe5fcbaa6 bridge bridge local e7428d016680 host host local ea83f49e7723 none null local [root@newdocker2 ~]#
1
2
3
4
5
6一般用
bridge
和host
模式。
# 1. bridge 模式
Docker
容器默认使用bridge
模式的网络。
- 使用一个
linux bridge
,默认为docker0
,在宿主机上穿件一个docker0
的网桥。使用veth
对,一头在容器的网络namespace
中,一头在docker0
上。 - 该模式下
Docker Container
不具有一个公有IP
,因为宿主机的IP地址
与veth pair
的IP地址
不在同一个网段内。 Docker
采用NAT
方式,将容器内部的服务监听的端口与宿主机的某一个端口port
进行“绑定”,使得宿主机以外的世界可以主动将网络报文发送至容器内部 外界访问容器内的服务时,需要访问宿主机的IP
以及宿主机的端口port
。NAT 模式
由于是在三层网络上的实现手段,故肯定会影响网络的传输效率。- 容器拥有独立、隔离的网络栈;让容器和宿主机以外的世界通过
NAT
建立通信。
# 2. host 模式
Host 模式并没有为容器创建一个隔离的网络环境。而之所以称之为
host模式
,是因为该模式下的Docker
容器会和host
宿主机共享同一个网络namespace
,故Docker Container
可以和宿主机一样,使用宿主机的eth0
,实现和外界的通信。换言之,Docker Container
的IP 地址
即为宿主机eth0
的IP 地址
。
特点
- 容器的 IP 地址同
Docker host
的IP 地址
。 - 容器中服务的端口号不能与
Docker host
上已经使用的端口号相冲突。
- 容器的 IP 地址同
下图浅色显示为
bridge模式
,左侧为host模式
。
# 3. none 模式
网络模式为
none
,即不为Docker
容器构造任何网络环境。一旦Docker
容器采用了none
网络模式,那么容器内部就只能使用loopback
网络设备,不会再有其他的网络资源。Docker Container
的none
网络模式意味着不给该容器创建任何网络环境,容器只能使用127.0.0.1
的本机网络。
# 4. container 模式
Container
网络模式是Docker
中一种较为特别的网络的模式。处于这个模式下的Docker
容器会共享其他容器的网络环境,因此,至少这两个容器之间不存在网络隔离,而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离。
- 这个模式指定新创建的容器和已经存在的⼀个容器共享⼀个
Network Namespace
, ⽽不是和宿主机共享。 - 新创建的容器不会创建⾃⼰的⽹卡, 配置⾃⼰的
IP
, ⽽是和⼀个指定的容器共享IP
、 端⼝范围等。 - 两个容器除了⽹络⽅⾯, 其他的如⽂件系统、 进程列表等还是隔离的。 两个容器的进程可以通过
lo ⽹卡
设备通信。
#
上次更新: 2023/12/06, 22:30:32