【问题标题】:every time when i start a container with docker it gets a different IP每次我用 docker 启动一个容器时,它都会得到一个不同的 IP
【发布时间】:2014-01-22 01:57:20
【问题描述】:

如何修复容器的静态 IP?

首先我启动一个容器并检查它,它说

"NetworkSettings": {
    "IPAddress": "XX.XX.206.98",
    "IPPrefixLen": 27,
    "Gateway": "XX.XX.206.105",
    "Bridge": "public",
    "PortMapping": null,
    "Ports": {}
},

然后我停止它,然后重新启动,就像

"NetworkSettings": {
    "IPAddress": "XX.XX.206.99",
    "IPPrefixLen": 27,
    "Gateway": "XX.XX.206.105",
    "Bridge": "public",
    "PortMapping": null,
    "Ports": {}
},

如您所见,它发生了变化。我刚刚创建了一个名为 public 的网桥,并添加了 -b=public 来启动 docker。如何为容器设置静态 IP?

【问题讨论】:

  • 这是一个重要功能,假设您有一个 db 服务作为 docker 运行,并且所有 jdbc url 都固定到该 ip addr。重新启动该数据库容器后,您必须修改每个 jdbc url。

标签: ip docker lxc


【解决方案1】:

从 DOCKER 1.10 开始

# create a new bridge network with your subnet and gateway for your ip block
$ docker network create --subnet 203.0.113.0/24 --gateway 203.0.113.254 iptastic

# run a nginx container with a specific ip in that block
$ docker run --rm -it --net iptastic --ip 203.0.113.2 nginx

# curl the ip from any other place (assuming this is a public ip block duh)
$ curl 203.0.113.2

更新

现在获取静态 IP 的唯一方法是通过两个脚本:pipeworkovs-docker

使用 Open vSwitch 作为多托管 docker 容器的“包含电池”版本是一个强有力的方向。

关注socketplane


此行为是设计使然。

有一个very interesting discussion 用于在未来的版本中更改它。

到目前为止,您可以做到的唯一方法是回退到 linux 容器:

docker run \
-n=false \
-lxc-conf="lxc.network.type = veth" \
-lxc-conf="lxc.network.ipv4 = 172.16.42.20/24" \
-lxc-conf="lxc.network.ipv4.gateway = 172.16.42.1" \
-lxc-conf="lxc.network.link = docker0" \
-lxc-conf="lxc.network.name = eth0" \
-lxc-conf="lxc.network.flags = up" \
-i -t my_image:my_tag /bin/bash

所以-n=false 禁用自动docker 网络,所有-lxc-conf 选项都是根据您的需要实际定义虚拟网络。

【讨论】:

  • 这已经不行了,你能更新你的答案吗?
  • 实际上我看到了两种解决问题的方法:github.com/jpetazzo/pipeworkdocs.docker.com/articles/networking/… 这些都不是问题的真正答案。
  • 这确实是一个 hack!但是由 docker 的一位创建者制作的 hack,所以它是原始的 hack(与原罪相同)。最重要的是,它很容易阅读和理解背后发生的事情,这是一个巨大的优势。我也在用!
猜你喜欢
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多