Docker网络管理

Docker网络管理

1、介绍

网络管理是docker中重要的部分,由于需要构建集群,容器之间需要进行通信,尤其是跨主机之间的容器间进行通信。

2、网络管理

docker有三种网络类型,bridge、host和none。

  1. 查看docker的网络帮助

    # 查看network命令帮助
    $>docker network --help
    

    运行结果如下:

    Usage:  docker network COMMAND
    
    Manage networks
    
    Commands:
      connect     Connect a container to a network
      create      Create a network
      disconnect  Disconnect a container from a network
      inspect     Display detailed information on one or more networks
      ls          List networks
      prune       Remove all unused networks
      rm          Remove one or more networks
    
  2. 查看网络列表

    列表中DRIVER是三种类型之一,name可以任意取。

    $>docker network list
    

  3. 检查指定网络

    $>docker network inspect mynetwork
    

    网关和网段:

    1539561974732

3、使用macvlan配置跨网访问

3.1 环境说明

本案例使用两台虚拟机,s101和s102,具体配置见表格。

主机名称 ip地址 网关
s101 192.168.231.101 192.168.231.2
s102 192.168.231.102 192.168.231.2

3.2 目标

本案例要是实现两台虚拟机内的四个docker容器之间的网络访问,具体网络拓扑如下:

主机 docker容器1 docker容器2
s103(192.168.231.103) 192.168.231.30 192.168.231.31
s104(192.168.231.104) 192.168.231.40 192.168.231.41

3.3 操作

  1. 对两台虚拟机的以太网卡均开启为混杂模式

    如果不开启混杂模式,会导致macvlan无法访问外网。使用命令如下:

    # 设置以太网卡开启混杂模式
    $>ip link set eno16777736 promisc on
    
  2. 查看网卡状态

    $>ifconfig
    

    1539700638692

  3. 在每台虚拟机上执行如下命令,添加虚拟网卡

    # s103执行 ,需要位于同一网段
    $>docker network create -d macvlan --subnet=192.168.231.30/24 --gateway=192.168.231.2 -o parent=eno16777736 -o macvlan_mode=bridge eth0_1
    
    # s104执行
    $>docker network create -d macvlan --subnet=192.168.231.40/24 --gateway=192.168.231.2 -o parent=eno16777736 -o macvlan_mode=bridge eth0_1
    
  4. 分别在两台虚拟机上创建docker容器

    • s103

      # 
      $>docker run -ti --privileged --net=eth0_1 --ip=192.168.231.30 --name spark30 myrepos:centos-spark-ssh /usr/sbin/init
      
      # 
      $>docker run -ti --privileged --net=eth0_1 --ip=192.168.231.31 --name spark31 myrepos:centos-spark-ssh /usr/sbin/init
      
    • s104

      # 
      $>docker run -ti --privileged --net=eth0_1 --ip=192.168.231.40 --name spark40 myrepos:centos-spark-ssh /usr/sbin/init
      
      # 
      $>docker run -ti --privileged --net=eth0_1 --ip=192.168.231.41 --name spark41 myrepos:centos-spark-ssh /usr/sbin/init
      
  5. 启动新终端,运行命令

$>docker exec -ti spark30 /bin/bash
  1. 测试容器之间是否能够ping通

    # spark30
    $>ping 192.168.231.31
    # spark30
    $>ping 192.168.231.40
    
posted @ 2018-10-23 19:29  大道至简(老徐)  阅读(753)  评论(0)    收藏  举报