zoukankan      html  css  js  c++  java
  • 05:Docker网络管理

    1、网络模式:

    • bridge
      –net=bridge
      默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。
    • host
      –net=host
      容器不会获得一个独立的network namespace,而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息,而是使用宿主机的。容器除了网络,其他都是隔离的。
    • none
      –net=none
      获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置。
    • container
      –net=container:Name/ID
      与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的。
    • 自定义网络
      与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信。

    2、容器网络访问原理:

    3、 桥接宿主机网络与配置固定IP地址:

    临时生效:
    # 网桥名称
    br_name=br0
    # 添加网桥
    brctl addbr $br_name
    # 给网桥设置IP
    ip addr add 192.168.0.211/24 dev $br_name
    # 删除已存在的eth0网卡配置
    ip addr del 192.168.0.211/24 dev eth0
    # 激活网桥
    ip link set $br_name up
    # 添加eth0到网桥
    brctl addif $br_name eth0
    # 添加路由
    ip route add default via 192.168.0.1 dev br0
    还需要在Docker启动时桥接这个网桥:
    # vi /usr/lib/systemd/system/docker.service 
    ExecStart=/usr/bin/dockerd -b=br0
    # systemctl restart docker

     永久生效:

    # vi /etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    BRIDGE=br0
    # vi /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE=br0
    TYPE=Bridge
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.0.211
    NETMASK=255.255.255.0
    GATEWAY=192.168.0.1
    DNS1=114.114.114.114

    配置固定IP:

    C_ID=$(docker run -itd --net=none ubuntu)
    C_PID=$(docker inspect -f '{{.State.Pid}}' $C_ID)
    # 创建network namespace目录并将容器的network namespace软连接到此目录,以便ip netns命令读取
    mkdir -p /var/run/netns
    ln -s /proc/$C_PID/ns/net /var/run/netns/$C_PID
    # 添加虚拟网卡veth+容器PID,类型是veth pair,名称是vp+容器PID
    ip link add veth$C_PID type veth peer name vp$C_PID
    # 添加虚拟网卡到br0网桥
    brctl addif br0 veth$C_PID
    # 激活虚拟网卡
    ip link set veth$C_PID up
    # 设置容器网络信息
    IP='192.168.0.123/24'
    GW='192.168.0.1'
    # 给进程配置一个network namespace
    ip link set vp$C_PID netns $C_PID
    # 在容器进程里面设置网卡信息
    ip netns exec $C_PID ip link set dev vp$C_PID name eth0
    ip netns exec $C_PID ip link set eth0 up
    ip netns exec $C_PID ip addr add $IP dev eth0
    ip netns exec $C_PID ip route add default via 192.168.1.1

    pipework工具配置容器固定IP:

    git clone https://github.com/jpetazzo/pipework.git
    cp pipework/pipework /usr/local/bin/
    docker run -itd --net=none --name test01 ubuntu
    pipework br0 test01 192.168.0.123/24@192.168.0.1
  • 相关阅读:
    第二阶段冲刺6
    第二阶段冲刺5
    第二阶段冲刺4
    第二阶段冲刺3
    暑假学习进度七
    暑假学习进度六
    暑假学习进度五
    暑假学习进度四
    暑假学习进度三
    暑假学习进度二
  • 原文地址:https://www.cnblogs.com/zheng-weimin/p/10322855.html
Copyright © 2011-2022 走看看