Docker网络

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
posted @ 2023-10-19 17:21  村尚chun叔  阅读(11)  评论(0编辑  收藏  举报