将本地 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
有没有办法让 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