virtualbox虚拟ubuntu 16.04,系统自带docker版本1.13.0docker0的默认IP为172.17.0.1
使用命令设置docker0的IP:
sudo ifconfig docker0 192.168.3.1 netmask 255.255.255.0
设置完后使用命令查看docker0,确实修改成功了。
然后使用命令重启docker服务
sudo service docker restart
再查看docker0的IP地址时又变成默认的172.17.0.1了,好伤心....请教大神,这怎么解决啊

解决方案 »

  1.   

    原则上是不能通过容器内部命令保存自定义的ip地址
    有两种方法可以设置固定ip:
    1. 把ifconfig命令加入到/root/.bashrc里,不过如果不用docker exe等登录,设置不会有作用;前提是容器有privileged或者cap-add=net_admin的许可,这个不推荐
    2. 从外部通过ip netns exec ${NSID} ifconfig eth0 xxxx修改,这个要写成脚本,每次启动该容器的时候都要通过脚本
    例如:
    #!/bin/bash
    [[ "$1" ]] && your_container_name="$1" || { echo "第一个参数是容器名称"; exit 1;}
    [[ "$2" ]] && your_image="$2" || { echo "第二个参数是镜像名称"; exit 2; } 
    [[ "$3" ]] && your_exec="$3" || { echo "第三个参数是运行的程序"; exit 3; }
    [[ "$4" ]] && your_ip="$4" || { echo "第四个参数是固定ip"; exit 4; }
    docker run -d --name=${your_container_name} ${your_image} ${your_exec}
    mkdir -p /var/run/netns
    unlink /var/run/netns/${your_container_name}
    ln -s /proc/$( docker inspect -f {{.State.Pid}} ${your_container_name})/ns/net /var/run/netns/${your_container_name}
    ip netns exec ${your_container_name} ifconfig eth0 ${your_ip}
      

  2.   

    可以修改docker.service中的启动参数,bind一个ip或者自己手动创建个网桥,然后通过指定参数 绑定到新网桥就可以了,不用每次都设置