我试图通过以下方式明确指定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暴露给主机。
我已经看了一些其他问题,但没有看到明确的语法来做到这一点
答案 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 link
和ip addr
命令设置“桥梁br0”并使用docker -d -b br0
启动泊坞窗
答案 1 :(得分:1)
您可以使用pipework分配固定的IP,但它不是“泊坞方式”。我同意阿德里安的观点。重新设计远离固定IP。
答案 2 :(得分:0)
-p
参数用于将端口从容器转发到主机,而不是用于分配IP。
没有简单的方法可以将固定IP分配给Docker容器,我强烈建议您不要尝试。而是重新构建您的系统,使其不依赖于固定的IP。如果这真的不可能,我认为您可以通过使用LXC执行驱动程序和各种标志来选择IP,但我强烈建议不要这样做。