很早以前弄过docker容器设置静态ip地址以及容器与容器之间通信,用的不多所以没有记录下来。

今天在网上看到个文章关于设置静态ip地址的。就自己实战下。对了还有个pipework也可以设置。。


操作系统环境

root@zxl-node4:~# cat /etc/issue
Ubuntu 14.04.3 LTS \n \l

宿主机(系统采用ubuntu-14.04.1-server-amd64)的网络采用桥接模式(默认是DHCP模式,还有一种模式就是静态IP),网桥的网段与物理网段相同。目前的物理网段为192.168.75.0/24,网关是192.168.75.2,物理网卡设备为eth0

编辑配置文件/etc/network/interfaces,自定义网桥br0,修改的内容如下

root@zxl-node4:~# tail -n8 /etc/network/interfaces
auto br0iface
br0 inet static    
address 192.168.75.131    
netmask 255.255.255.0    
gateway 192.168.75.2    
bridge_ports eth0    
bridge_stp off    
dns-nameservers 192.168.75.2

保存退出后,重启网络

root@zxl-node4:~# ifdown -a && ifup -a

使用ifconfig命令查看网络接口信息,宿主机ip地址192.168.75.131

wKioL1c5y_PSRnOZAAHjIDayFdk885.jpg

网桥配置好后,然后就是配置docker网络配置

  • 容器启动网络模式必须为none,用-net=none指定,示例如下

root@zxl-node4:~# docker run -itd --name  x6  --net=none ubuntu /bin/bash
142cbe651cb7289edbc0fa8804e135908c75fb7ac26cf474f55c5e7786049bfb

注:docker容器ID比较长可以简写即可,使用docker ps也可以看到容器ID,示例如下

wKiom1c5yziT6TpjAACkdEPMfe8904.jpg

  • 给新运行的容器设置静态IP地址,网上有个哥们使用脚本的方式配置IP然后输入参数即可,我是直接使用它的scripts,142cbe651cb7容器ID,24位掩码,192.168.75.2网关。示例如下

root@zxl-node4:~# sh static_ip.sh 142cbe651cb7 192.168.75.199 24 192.168.75.2

ping一下给容器x6设置的静态ip192.168.75.199

wKiom1c5y23yRQbuAADJ3RTW-Rw708.jpg

  • 进入容器名字为x6,查看下ip地址

wKioL1c5zG_QdaYaAAGdGqPWJg8053.jpg

注:docker容器重启后IP地址就米了

脚本内容如下

wKioL1c5zKHQQ9URAAHhgtBVzo8598.jpg