在 docker 容器中配置双网卡,解决通讯的问题

目录

1.  查看当前网络信息

2.  创建自定义网络桥

3.  创建双网卡模式

4.  删除默认网卡


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

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

   如下图所示,容器在创建时、默认绑定了 docker0 这张虚拟网卡
   在 docker 容器中配置双网卡,解决通讯的问题_第1张图片
   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 上与宿主通讯
在 docker 容器中配置双网卡,解决通讯的问题_第2张图片

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

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 容器中配置双网卡,解决通讯的问题_第3张图片

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

# 1. 停止容器
     docker stop 29812a95bcb2

# 2. 启动容器
     docker start 29812a95bcb2

# 3. 进入容器
     docker attach 29812a95bcb2

# 4. 查看网络
     ifconfig -a

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

在 docker 容器中配置双网卡,解决通讯的问题_第4张图片

你可能感兴趣的:(编程开发,Ubuntu,ROS,docker,容器,linux)