如何正确指定docker容器的IP

时间:2015-02-06 03:16:42

标签: docker

我试图通过以下方式明确指定docker容器的IP地址:

sudo docker run -it -p 172.17.0.2:10000:10000 -p 9000:9000 -p 9090:9090 -v /home/eugene/dev/shared:/opt/shared -d eugene/dev_img_1.3

我收到以下错误:

Error response from daemon: Cannot start container b2242e5da6e1b701ba4880f25fa8d465d5f008787b49898ad9e46eb26e417e48: port has already been allocated

我真的不关心端口10000.我的目标是拥有我选择的特定容器IP,以及将端口9000和9090暴露给主机。

我已经看了一些其他问题,但没有看到明确的语法来做到这一点

3 个答案:

答案 0 :(得分:1)

这可以通过不同的方式完成。

您可以编辑系统范围的Docker服务器设置(通过编辑/ etc / default / docker中的DOCKER_OPTS)并在Ubuntu中添加选项--ip=IP_ADDRESS,然后重新启动服务器。如果您只使用1个泊坞窗容器并希望泊坞机IP与主机相同,请使用--net=host标志启动泊坞窗容器,以将容器设置为具有主机IP地址。

其他方法是在服务器启动时配置这些选项(通过编辑/ etc / default / docker中的DOCKER_OPTS): --bip=CIDR - 使用标准符号192.168.1.8/23为“docker0”网桥提供特定的IP地址和网络掩码。 例如,对于--fixed-cidr=192.168.1.0/25,将从192.168.1.0/24子网的前半部分中选择容器的IP。每次创建新容器时都会使用“docker0”以太网桥设置。您正尝试使用-p标志将容器的端口绑定到特定端口,这不会帮助您为容器分配IP地址。

在任何特定范围内分配IP地址的另一种方法(例如:172.30.1.21 / 30)。使用stop docker停止泊坞窗,然后使用ip linkip addr命令设置“桥梁br0”并使用docker -d -b br0启动泊坞窗

答案 1 :(得分:1)

您可以使用pipework分配固定的IP,但它不是“泊坞方式”。我同意阿德里安的观点。重新设计远离固定IP。

答案 2 :(得分:0)

-p参数用于将端口从容器转发到主机,而不是用于分配IP。

没有简单的方法可以将固定IP分配给Docker容器,我强烈建议您不要尝试。而是重新构建您的系统,使其不依赖于固定的IP。如果这真的不可能,我认为您可以通过使用LXC执行驱动程序和各种标志来选择IP,但我强烈建议不要这样做。