Docker|Docker Net 网络

Docker|Docker Net 网络
文章图片
四种容器网络原型以及他们之间相互交互的网络拓扑图

  1. 默认桥接模式
docker run --name b1 -it --rm busybox:latest;

Docker|Docker Net 网络
文章图片
此时容器的主机名是容器id,如果想要自定义主机名,在 docker run 时通过 --hostname 指定
docker run --name b1 -it --rm --hostname b1 busybox:latest; hostname hostid cat /etc/hosts cat /etc/resolv.conf nslookup -type=a www.baidu.com; // 域名解析

Docker|Docker Net 网络
文章图片
  1. 无网络模式
docker run --name a1 --rm -it --network none busybox:latest

Docker|Docker Net 网络
文章图片
  1. 联盟式网络(共享 NET,UTS,IPC
docker run --name a2 --rm -it --network container:b1 busybox:latest


Docker|Docker Net 网络
文章图片

可以看到新启动的容器 a2 和容器 b1 共享同一个 net namespaces

Docker|Docker Net 网络
文章图片

在 b1 容器上启动 httpd 服务,在 a2 容器中通过 wget -O - -q 127.0.0.1同样可以访问到
  1. 使用宿主机网络
docker run --name a1 --rm -it --network hostbusybox:latest

关于网桥的设置
1. 创建网络自定义网桥,指定子网、网关信息
docker network create -d bridge --subnet "172.16.0.0/16" --gateway "172.16.0.1" custombr

2. 如何将 docker0 默认的 172.27.0.1 修改成别的地址
修改 /etc/docker/daemon.json 文件,添加 bip(即 bridge ip),就可以设置 docker0 桥自身的 ip 地址,其它字段都可以根据 bip 计算得出,注意的是 dns 无法计算,需要自己配置。默认情况下,只需设置 bip 即可
{ "bip": "192.168.1.5/24", "fixed-cidr": "10.20.0.0/16", "fixed-cidr-v6": "2001:bd8::/64", "mtu": 1500, "default-gateway": "10.20.1.1", "default-gateway-v6": "2001:bd8:abcd::89", "dns": ["10.20.1.2", "10.20.1.3"] }

3. 如何在别的主机上访问另一台主机的 docker daemon 进程
docker daemon 默认仅监听 Unix Socket 格式的文件地址 /var/run/docker.sock,如果想使用 TCP 套接字连接,修改/etc/docker/daemon.json 添加如下信息:
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]

使用 docker -H 192.168.146.128 image ls 即可查看这台机器上的所有镜像了 (-H, --host)
【Docker|Docker Net 网络】安装 bridge-utils
yum install -y bridge-utils; brctl show; // 查看网络设备

Docker|Docker Net 网络
文章图片
image.png

    推荐阅读