将本地 IP 分配给 docker 个容器

Assigning a local IP to docker containers

有没有办法让 docker 自动为其容器提供一个本地 IP 地址,您可以通过暴露的端口访问该地址?

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

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

然后将分配一个本地 IP,如果您配置了网桥,您可以通过 lxc-ls 查看该 IP:

lxc-ls -f

这对于抛出一堆容器来测试像ansible这样的deployment/configuration管理非常方便。

是否可以在 docker 中做类似的事情而不会很头疼?我是用LXC过来的,对网络模式不熟悉

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

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

看来可以通过一个小技巧来显示IP地址:(基于此post

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

您还可以使用 docker 运行 命令的 -p 选项公开端口。

示例:

docker run -itd -p 8080:80 nginx

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

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

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