Docker网络

五、Docker网络(network)

  • 桥接
  • NET
  • Overlay Network 叠加网络,IP承载IP的隧道通信
# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
f0867978e324        bridge              bridge              local  #net桥接式网络(默认)
f2ecf4873c28        host                host                local  #容器使用宿主机的名称空间
07123e30eddb        none                null                local  #只有lo网卡
# yum install bridge-utils
# brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02420a3bea55       no              vethd1d80f0
# docker network inspect bridge  #查看网络的详细信息
# docker run --name centos --network host -it dongfeimg/mycentos:v0.1  #使用host网络
  • ip命令管理网络名称空间
# rpm -q iproute
iproute-4.11.0-14.el7.x86_64
# ip netns add r1  #创建网络名称空间
# ip netns add r2
# ip netns list
# ip netns exec r1 ifconfig -a  #在网络名称空间中执行命令
# ip link add name veth1.1 type veth peer name veth1.2  #创建一对虚拟网卡
# ip link show
# ip link set dev veth1.1 netns r1  #将veth1.1网卡移动到网络名称空间r1中
# ip link set dev veth1.2 netns r2
# ip netns exec r1 ifconfig veth1.1 10.0.0.1/24 up
# ip netns exec r2 ifconfig veth1.2 10.0.0.2/24 up
# ip netns exec r1 ping 10.0.0.2

1. 封闭式容器:只有lo网卡

  • 创建封闭式容器
# docker run --name  centos7 -it --network none --rm dongfeimg/mycentos:v0.1

2. 联盟式容器:两个容器使用一个名称空间

  • 创建联盟式容器(共享网络名称空间)
# docker run --name b1 -it --rm busybox
/ # echo "hello" > /tmp/index.html
/ # httpd -h /tmp/
# docker run --name b2 -it --rm --network container:b1 busybox
/ # wget -O - -q 127.0.0.1

3. 连接docker0网桥的桥接容器

  • 创建桥接式容器并且创建时注入主机名、DNS和hosts
# docker run --name  centos7 -it --network bridge --rm --hostname mydocker.dongfei.com --dns 8.8.8.8 --add-host www.dongfei.com:192.168.0.111 dongfeimg/mycentos:v0.1
  • 开放桥接容器端口至宿主机(-p选项可使用多次)
# docker run --name web01 --rm -p 80 nginx:1.14  #将容器的80映射至宿主机上的随机端口
# docker run --name web01 --rm -p 192.168.100.9::80 nginx:1.14  #指定映射宿主机地址
# docker run --name web01 --rm -p 80:80 nginx:1.14  #将容器的80映射至宿主机的80端口
# docker run --name web01 --rm -p 192.168.100.9:80:80 nginx:1.14  #指定映射端口和地址
# docker port web01  #查看映射关系
# iptables -t nat -vnL |grep DNAT
# docker inspect bc337aa4d9fc |grep HostPort
  • 修改docker0网桥地址信息
# vim /etc/docker/daemon.json
{
  "bip": "10.0.0.254/16",
  "fixed-cidr": "10.0.0.0/16",
  "mtu": 1500,
  "default-gateway": "10.0.0.1",
  "dns": ["114.114.114.114","8.8.8.8"]
}
  • 创建自定义网桥
# docker network create --driver bridge --subnet "172.27.0.0/16" --gateway "172.27.0.1" docker1
# docker network ls
# ip link set br-0a9309aaa170 down
# ip link set br-0a9309aaa170 name docker1  #修改接口名字
# ip link set docker1 up
# docker network rm docker1  #删除网桥

4. 共享宿主机网络容器

  • 创建共享宿主机网络容器
# docker run --name b1 -it --rm --network host busybox
posted @ 2019-06-15 20:22  生生不息.连绵不绝  阅读(275)  评论(0编辑  收藏  举报