root@ubuntu:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
232621e9e9fb redis_cluster "/app/manage.sh 9000 41 minutes ago Up 41 minutes agitated_blackwell
root@ubuntu:~# docker inspect -f "{{.State.Pid}}" 232621e9e9fb
4777
root@ubuntu:~# pid=4777
那么我们来开始绑定静态ip地址,先别看原理,暂时照着做…
mkdir -p /var/run/netns
ln -s /proc/$pid/ns/net /var/run/netns/$pid ip link add A type veth peer name B
brctl addif docker0 A
ip link set A up
ip link set B netns $pid
ip netns exec $pid ip link set dev B name eth0
ip netns exec $pid ip link set eth0 up
ip netns exec $pid ip addr add 192.168.1.200/24 dev eth0
ip netns exec $pid ip route add default via 192.168.1.1
bash-4.1# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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 forever
22: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether ca:aa:87:05:c9:5a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.200/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::c8aa:87ff:fe05:c95a/64 scope link
valid_lft forever preferred_lft forever
bash-4.1#
到此为止,docker绑定固定的静态ip的方法已经说明白了…. 看了文章后,会发现docker绑定ip是比较的简单.. docker的网络是不怎么好理解的,这两天我多专供下docker分配ip的整个流程 (docker iptables)