Docker Net 网络

Docker Net 网络_第1张图片
四种容器网络原型以及他们之间相互交互的网络拓扑图
  1. 默认桥接模式
docker run --name b1 -it --rm busybox:latest; 
Docker Net 网络_第2张图片

此时容器的主机名是容器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 Net 网络_第3张图片
  1. 无网络模式
docker run --name a1 --rm -it --network none busybox:latest
Docker Net 网络_第4张图片
  1. 联盟式网络(共享 NET,UTS,IPC
docker run --name a2 --rm -it --network container:b1 busybox:latest

Docker Net 网络_第5张图片

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

Docker Net 网络_第6张图片

在 b1 容器上启动 httpd 服务,在 a2 容器中通过 wget -O - -q 127.0.0.1同样可以访问到

  1. 使用宿主机网络
docker run --name a1 --rm -it --network host  busybox: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)


安装 bridge-utils

yum install -y bridge-utils;
brctl show; // 查看网络设备
Docker Net 网络_第7张图片
image.png

你可能感兴趣的:(Docker Net 网络)