如何正确指定泊坞窗容器的IP地址

我试图显式指定我的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.我的目标是具有我select的特定容器IP,以及将端口9000和9090暴露给主机。

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

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

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

你可以使用pipe道分配一个固定的ip,但这不是“docker方式”。 我会同意阿德里安。 重新devise远离固定IP。

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

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

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

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