在 docker 容器中配置双网卡,解决通讯的问题
已经创建好了的 Docker 容器,要修改它的 IP 比较麻烦,网上找了几种不同的方法,经过试验都没有成功,下面通过配置双网上来解决IP的问题。双网卡配置好后,也可以删除默认网卡,只保留自己新建的网卡,这样就达到了修改 IP 的目的。创建虚拟网络# 删除虚拟网络。
·
目录
已经创建好了的 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 已经被删除了。
更多推荐
已为社区贡献1条内容
所有评论(0)