use*_*964 7 ip containers bridge docker
当我创建容器时,我想在同一个LAN中设置特定容器的IP地址.
那可能吗?
如果没有,创建后我可以编辑DHCP IP地址吗?
考虑到(现在是 2013 年 10 月)文章“如何配置 Docker 以在特定 IP 地址范围内启动容器”的结论,这似乎是不可能的(或者至少“由 Docker 自动为你完成”).
2015 年 11 月更新:在docker/machine issue 1709 中讨论了类似的问题,其中包括Tobias Munk ( )为docker machine提出的最近解决方法(2015 年 11 月)
(对于容器,请参见下一节):schmunk42
一个解决方法对于一些用例可以创建出象这样的机器:
192.168.98.100
docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.98.1/24" m98
Run Code Online (Sandbox Code Playgroud)192.168.97.100
docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.97.1/24" m97
Run Code Online (Sandbox Code Playgroud)192.168.96.100
docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.96.1/24" m96
Run Code Online (Sandbox Code Playgroud)如果没有其他机器具有相同的cidr (Classless Inter-Domain Routing),机器应该总是
.100
在启动时获得IP。
另一种解决方法:
我的虚拟机的 dhcp 范围是 192.168.99.100 - 255,我想在 100 之前设置一个 IP。
我发现了一个设置静态 IP 的简单技巧:创建机器后,我运行此命令并重新启动机器:
echo "ifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" \
| docker-machine ssh prova-discovery sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null
Run Code Online (Sandbox Code Playgroud)
此命令创建一个
bootsync.sh
由boot2docker
启动脚本搜索并执行的文件。现在在机器启动期间执行命令并设置静态 IP。
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
test-1 - virtualbox Running tcp://192.168.99.50:2376 test-1 (mast
Run Code Online (Sandbox Code Playgroud)
Michele Tedeschi ( micheletedeschi
) 补充说
我已经用以下命令更新了命令:
echo "kill `more /var/run/udhcpc.eth1.pid`\nifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh prova-discovery sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null
Run Code Online (Sandbox Code Playgroud)
然后运行命令(仅第一次)
docker-machine regenerate-certs prova-discovery
Run Code Online (Sandbox Code Playgroud)
现在IP不会被DHCP改变
(替换prova-discovery
为您的 docker-machine 的名称)
2015 年 4 月:
文章提到了创建自己的网桥的可能性(但不会将这些 IP 地址之一分配给容器):
创建你自己的网桥,用固定地址配置它,告诉 Docker 使用它。完毕。
如果您手动执行此操作,它将如下所示(在 Ubuntu 上):
stop docker
ip link add br0 type bridge
ip addr add 172.30.1.1/20 dev br0
ip link set br0 up
docker -d -b br0
Run Code Online (Sandbox Code Playgroud)
要在现有网桥 IP 范围内分配静态 IP,您可以尝试“如何在 Docker 容器中设置静态 IP 地址? ”,使用创建网桥和一对对等接口的静态脚本。
2015 年 7 月更新:
上面提到的想法也在“如何在 Docker 容器中设置静态 IP 地址? ”中详细说明,使用:
结果应该是 Docker 服务器成功启动,现在准备将容器绑定到新网桥。
暂停以验证网桥的配置后,尝试创建一个容器——您将看到它的 IP 地址在您的新 IP 地址范围内,Docker 将自动检测到该地址。您可以使用该
brctl show
命令在启动和停止容器时查看 Docker 在网桥中添加和删除接口的情况,并且可以在容器内运行 ip addr 和 ip route 以查看它是否已获得网桥 IP 地址范围内的地址,并且被告知在网桥上使用 Docker 主机的 IP 地址作为其通往 Internet 其余部分的默认网关。
使用以下命令启动 docker:(-b=br0
这也是echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
默认情况下可以为您设置的)
使用管道(下面的 192.168.1.1 是默认网关 IP 地址):
pipework br0 container-name 192.168.1.10/24@192.168.1.1
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
5302 次 |
最近记录: |