docker 給容器配置ip(和主機一個網段)。詳情參考:http://www.xiaomastack.com/2015/02/06/docker-static-ip/
#/bin/bash if [ -z $1 ] || [ -z $2 ] || [ -z $3 ] || [ -z $4 ] || [ -z $5 ]; then echo "*****Input the necessary parameters: CONTAINERID IP MASK GATEWAY ETHNAME" echo "*****Call the script like: sh manual_con_static_ip.sh b0e18b6a4432 192.168.5.123 24 192.168.5.1 deth0" exit fi CONTAINERID=$1 SETIP=$2 SETMASK=$3 GATEWAY=$4 ETHNAME=$5 #判斷宿主機網卡是否存在 ifconfig $ETHNAME > /dev/null 2>&1 if [ $? -eq 0 ]; then read -p "$ETHNAME exist,do you want delelte it? y/n " del if [[ $del == 'y' ]]; then ip link del $ETHNAME else exit fi fi # pid=`docker inspect -f '{{.State.Pid}}' $CONTAINERID` mkdir -p /var/run/netns find -L /var/run/netns -type l -delete if [ -f /var/run/netns/$pid ]; then rm -f /var/run/netns/$pid fi ln -s /proc/$pid/ns/net /var/run/netns/$pid # ip link add $ETHNAME type veth peer name B brctl addif br3 $ETHNAME ip link set $ETHNAME up ip link set B netns $pid #先刪除容器內已存在的eth0 ip netns exec $pid ip link del eth0 > /dev/null 2>&1 #設置容器新的網卡eth0 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 $SETIP/$SETMASK dev eth0 ip netns exec $pid ip route add default via $GATEWAY
pid=`docker inspect -f
'{{.State.Pid}}'
$CONTAINERID`
|
為了操作容器需要獲取容器的進程號PID,docker inspect 可以查看容器的底層信息,查看容器dfe83012cda2所有的底層相關信息,用docker inspect dfe83012cda2就可以查看。-f參數可以格式化輸出給定的信息,比如查看容器的狀態