Docker | 容器配置静态 IP
Contents
方式一:Pipework
借助pipework实现,容器重启后 IP 需要重新配置。
Pipework简介
Software-Defined Networking for Linux Containers(SDN). Pipework是一个Docker网络配置工具,由200多行shell实现, 来帮助你自动打通容器之间的网络连接,pipework允许你在一个复杂的环境下把容器连接在一起,pipework使用cgroup和namespace来和LXC容器协同工作,当然也可以和docker来一起工作。
需求
- Docker 创建容器时,默认模式是 Bridge 模式。但是这个 Bridge 模式仅限于本机的 docker0,而不是像 VMware 虚拟机的 Bridge 模式一样可以得到主机所在 LAN 的 IP 地址。
- 为了让局域网下的其他主机可以直接访问Docker容器,就像访问一台逻辑上的主机一样,无需经过NAT转换和端口映射,此时就需要Pipework进行配置
注:当你在docker中使用pipework之前,先去docker用户列表中询问一下,docker是否已经有了更加原生方法来实现相同的功能,这样你应该不用pipework,pipework后面应该被淘汰的。如果当前版本的docker真的没有办法使你的docker容器集中在一起,那么只能使用pipework了。
安装pipework
1 2 |
git clone https://github.com/jpetazzo/pipework.git sudo cp -rp pipework/pipework /usr/local/bin/ |
使用 pipework 配置容器 IP
|
|
方式二:Docker内嵌支持配置静态 IP
创建自定义网络
- docker network create -d bridge –subnet=172.18.0.0/16 –gateway=172.18.0.1 docker-br1
- 注:docker-br1 为自定义网桥的名字
查看所有docker网络
- docker network ls
- docker network ls
为容器设置静态IP
- docker run –name ip0 -it –net docker-br1 –ip 172.18.0.2 centos /bin/bash
- 进入容器后,输入ifconfig查看IP
查看容器IP
- 方式一:docker inspect $(docker ps -q) | grep IPAddress
- 方式二:docker inspect –format=“{{.Name}}: {{.NetworkSettings.IPAddress}}” $(docker ps -q)
See Also
Thanks to the authors 🙂
Pipework
- Github首页
- 通过 pipework 让 Docker 容器处于主机所在 LAN
- 使用pipework将Docker容器配置到本地网络环境中
- 使用pipework桥接docker
- Docker网络详解及pipework源码解读与实践
Docker内置方式
–net=none 自定义网络方式