- 默认桥接模式
docker run --name b1 -it --rm busybox:latest;
此时容器的主机名是容器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 run --name a1 --rm -it --network none busybox:latest
- 联盟式网络(
共享 NET,UTS,IPC
)
docker run --name a2 --rm -it --network container:b1 busybox:latest
可以看到新启动的容器 a2 和容器 b1 共享同一个
net namespaces
在 b1 容器上启动 httpd 服务,在 a2 容器中通过
wget -O - -q 127.0.0.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; // 查看网络设备
image.png
网友评论