目录

1.  查看当前网络信息

2.  创建自定义网络桥

3.  创建双网卡模式

4.  删除默认网卡


已经创建好了的 Docker 容器,要修改它的IP比较麻烦,网上找了几种不同的方法,经过试验都没有成功,下面通过配置双网上来解决 IP 的问题。双网卡配置好后,也可以删除默认网卡,只保留自己新建的网卡,这样就达到了修改 IP 的目的,具体操作如下:

1. 进入容器查看当前网络信息

   如下图所示,容器在创建时、默认绑定了 docker0 这张虚拟网卡
  
   docker 内修改 IP 地址,提示无权限,网上找了很多方法,没能解决。

 2. 创建自定义网络桥

# 1. 创建虚拟网络桥命令:
docker network create -d bridge \
               --subnet 192.168.123.0/24 \
               --gateway 192.168.123.1 unitree

# 2. 查看主机网络信息:
docker network ls

# @. 删除虚拟网络桥命令:
# docker network rm unitree

 3. 建立双网卡模式

# 1. 容器在创建的时候已经连接到了 docker0
# 2. 将容器连接到网络:
     # 网卡名称: unitree , 容器ID: 29812a95bcb2
     docker network connect unitree --ip 192.168.123.121 29812a95bcb2

# @. 从容器中移除网络
#    docker network disconnect unitree 29812a95bcb2

如下图所示,多出了一个网卡 eth1,它连接到 unitree 上与宿主通讯

# 1.执行 ifconfig -a 命令
    # 出现错误:
    bash: ifconfig command not found
    # 修复方法:
    sudo apt install net-tools
    
# 2.执行 ping 192.168.0.200 命令
    # 出现错误:
    bash: ping: command not found
    # 修复方法:
    sudo apt install iputils-ping

 至此,容器的双网卡配置完毕 !
 

4. 从双网卡中删除默认网卡

# 1. 查看虚拟网卡
     docker network ls
     ----------------------------------------
     NETWORK ID     NAME      DRIVER    SCOPE
     c03bbbab3167   unitree   bridge    local
     3d2320f1b5d9   bridge    bridge    local
      2d97eaff3f12  host      host      local
     6cf7015fa97c   none      null      local

# 2. 下面将从容器的双网卡中,删除默认的桥接网络
     docker network disconnect bridge 29812a95bcb2

 删除 默认 网卡 如下图所示,eth0 已经没有了。 



  重启 docker 后刚才的 eth1 就变成 eth0 了,是默认网卡了。

# 1. 停止容器
     docker stop 29812a95bcb2

# 2. 启动容器
     docker start 29812a95bcb2

# 3. 进入容器
     docker attach 29812a95bcb2

# 4. 查看网络
     ifconfig -a

再查看网络,默认的网卡已经是 unitree 了,连接虚拟网卡的 docker0 已经被删除了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐