环境
Ubuntu 14.04.4 LTS
安装 brctl 网桥 apt-get install bridge-utils 以 - net='none'的方式启动一个 container docker run -i -t --name=net --hostname=net --net='none' ubuntu:ssh /bin/bash root@net:/# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
使用'none'模式, container 中没有获取到 IP, 甚至连网卡都没有
首先找到 ID 通过 ID 找到进程 Pid docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESeaadcd10ca44 ubuntu:ssh "/bin/bash" 4 minutes ago Up 4 minutes netdocker inspect -f "{{.State.Pid}}" eaadcd10ca4410711 以容器的 ID 创建一个网卡 ip link add veth_eaadc type veth peer name eaadcd10ca44 把网卡绑定到 docker0 brctl addif docker0 veth_eaadc 启动网卡 ip link set veth_eaadc upip link set eaadcd10ca44 netns 10711 #容器内部的已经有网卡了, 只是没 IP aliyunzixun@xxx.com:/# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever28: aliyunzixun@xxx.com: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether a2:25:7d:d1:2b:e5 brd ff:ff:ff:ff:ff:ff 配置容器网卡 mkdir -p /var/run/netns/ln -s /proc/10711/ns/net /var/run/netns/10711ip netns exec 10711 ip link set dev eaadcd10ca44 name eth0ip netns exec 10711 ip link set eth0 upip netns exec 10711 ip addr add 172.17.111.3/16 dev eth0ip netns exec 10711 ip route add default via 172.17.42.1
172.17.42.1 为 docker0 的 IP
配置完成.
容器重启需要重新配置, 因为 PID 变了
来源: https://www.aliyun.com/jiaocheng/156474.html