将本地IP分配给docker容器

时间:2018-05-16 05:03:43

标签: docker networking lxc

有没有办法让docker自动为它的容器提供一个本地IP地址,你可以通过暴露的端口到达它?

例如,LXC有办法做到这一点。

lxc-create -t ubuntu -n myname
lxc-start -n myname -d

如果你配置了一个网桥,那么它将分配一个你可以通过lxc-ls看到的本地IP:

lxc-ls -f

这非常便于抛出一堆容器来测试部署/配置管理,例如ansible。

是否可以在没有太多头痛的情况下在docker中做类似的事情?我来自使用LXC,我不熟悉网络模式。

1 个答案:

答案 0 :(得分:1)

LXC和Docker非常相似。安装LXC时,会选择一个随机子网来配置网桥的IP地址和连接到它的容器。使用Docker时,默认子网为172.17.0.0/16,可根据需要进行自定义。使用docker run命令凝视的每个容器(除非使用主机网络或另一个容器的网络)都被分配了来自上述子网的IP地址。

docker ps列出了所有正在运行的容器,但不幸的是它没有显示IP地址。

看起来小技巧可以显示IP地址:(基于此post

docker ps -q | xargs docker inspect --format '{{ .Id }} - {{ .Name }} - {{ .NetworkSettings.IPAddress }}'

此外,您可以使用docker run命令的-p选项公开端口。

示例:

docker run -itd -p 8080:80 nginx

这将启动docker bridge上的容器,并通过端口8080公开主机网络上的nginx。

from_host_running_container# curl http://172.17.x.y

from_not_the_host_running_container # curl http://${HOST_IP}:8080