linux 构建 docker 网络

来源:互联网 发布:搜狗五笔输入法mac版 编辑:程序博客网 时间:2024/04/28 15:07

ifconfig 和 route 已过时,现在推荐 ip 命令

ip a 等价于 ip addr

ip netns exec 用于配置网络命名空间

注意:这个是针对较旧版本的 docker

sudo apt-get install bridge-utils# 显示网桥信息,可以看到有两个容器连接到 bridge 上sudo brctl show# 容器中的网卡接口是 eth0docker run -h="nn1" --net=none --name nn1 -it -v $download_src:$download_dst yuzx2008/web_env:v2 /bin/bash  # 从容器内看网络  ip addr show eth0  ip route# 查看容器进程的 pidpid=`docker inspect -f '{{.State.Pid}}' nn1`# 创建 ip netns 命令要用的命名空间条目sudo mkdir -p /var/run/netnssudo ln -s /proc/$pid/ns/net /var/run/netns/$pid# 查看网桥的 ip 地址和子网掩码,172.17.42.1/16ip addr show docker0# 添加接口 A,对应容器内的接口 Bsudo ip link add A type veth peer name B# 绑定 A 到网桥sudo brctl addif docker0 A# 启动 A 接口sudo ip link set A up# 查看网桥,可以看到 Asudo brctl show# 查看所有的接口 A B docker0ifconfig -a# 将 B 放到容器的网络名称空间,可以容器中 ifconfig -asudo ip link set B netns $pid# B 在容器中的名称为 eth0sudo ip netns exec $pid ip link set dev B name eth0# 设置它的 mac 地址sudo ip netns exec $pid ip link set eth0 address 12:34:56:78:9a:bc# 激活它sudo ip netns exec $pid ip link set eth0 up# ip 地址sudo ip netns exec $pid ip addr add 172.17.42.99/16 dev eth0# 添加路由sudo ip netns exec $pid ip route add default via 172.17.42.1# 容器网络已配置好容器退出时,Docker 会清理容器,网络命名空间也会被销毁# 清理sudo find -L /var/run/netns -type l -delete
0 0
原创粉丝点击