• 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
    
  • 相关阅读:
    C语言的AES加密
    curl指定域名的IP
    gdb调试知识
    C++获取寄存器eip的值
    C++嵌入lua
    [置顶] python字典和nametuple互相转换例子
    【python】redis基本命令和基本用法详解
    xshell登录到CentOS7上时出现“The remote SSH server rejected X11 forwarding request.
    selinue引起的ssh连接错误
    SCP和SFTP相同点和区别
  • 原文地址:https://www.cnblogs.com/L-dongf/p/11028725.html
Copyright © 2020-2023  润新知