Docker网络模式
docker的网络功能就是利用Linux的network namespace,network bridge,虚拟网络设备实现的。
默认情况下,docker安装完毕会生成网桥docker0,可以理解为是一个虚拟的交换机,对两端的数据转发。
docker的网络接口默认都是虚拟的网络接口。
Docker容器网络在宿主机和容器内分别创建一个虚拟接口,让他们彼此通信。
Docker四种网卡模式(面试问)
--networkwork 参数
--network=bridge 这个是默认值,连接到默认的网桥docker0,这个模式给容器自动分配IP,且通过iptables的nat表和宿主机实现数据通信。
--network=host 告诉 Docker 不要将容器网络放到隔离的命名空间中,即不要容器化容器内的网络。此时容器使用本地主机的网络,它拥有完全的本地主机接口访问权限。
容器进程可以跟主机其它 root 进程一样可以打开低范围的端口,可以访问本地网络服务比如 D-bus,还可以让容器做一些影响整个主机系统的事情,比如重启主机。
因此使用这个选项的时候要非常小心。如果进一步的使用 --privileged=true,容器会被允许直接配置主机的网络堆栈。
--network=container:NAME_or_ID 让 Docker 将新建容器的进程放到一个已存在容器的网络栈中,新容器进程有自己的文件系统、进程列表和资源限制,但会和已存在的容器共享 IP 地址和端口等网络资源,两者进程可以直接通过 lo 环回接口通信。
--network=none 让 Docker 将新容器放到隔离的网络栈中,但是不进行网络配置。之后,用户可以自己进行配置。
查看docker的网络模式
查看当前docker已有的网络配置的方式
[root@docker-200 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
6cb9ed4cc353 bridge bridge local
6d71aada2627 harbor_harbor bridge local
f3971eca0c0f host host local
ff6208d689fb none null local
[root@docker-200 ~]#ifconfig docker0
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:3eff:feca:fa2b prefixlen 64 scopeid 0x20<link>
ether 02:42:3e:ca:fa:2b txqueuelen 0 (Ethernet)
RX packets 182668 bytes 9877642 (9.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 292481 bytes 473496962 (451.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 安装网桥管理工具
[root@docker-200 ~]#yum install bridge-utils -y
[root@docker-200 ~]#brctl show
bridge name bridge id STP enabled interfaces
br-6d71aada2627 8000.02420be0d11c no veth074229e
docker0 8000.02423ecafa2b no
查看实际容器创建的虚拟网卡
[root@docker-200 ~]#ifconfig |grep veth
veth41f51d7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
veth9dc2f5a: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
vethd661064: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
docker网络模式常用命令
增
docker network create --driver bridge --subnet 子网 --gateway 网关 网络名
如:docker network create --driver bridge --subnet 172.14.0.0/16 --gateway 172.14.0.1 bridge-net2
删
docker network rm 网络名
docker network prune # 删除所有定制化无容器使用的网络
改
修改默认的docker0网络ip段
修改docker配置文件,增加"bip":"192.168.2.1/24",
{
"bip":"192.168.2.1/24",
"registry-mirrors" : [
"https://ms9glx6x.mirror.aliyuncs.com"
],
"insecure-registries":["http://10.0.0.200"]
}
重启docker
查
docker network ls
标签:容器,network,bridge,--,网络,docker,Docker
From: https://www.cnblogs.com/chunjeh/p/17775226.html