无法通过桥接网络上的别名或名称连接到容器
Can't connect to the container neither by alias nor by name on the bridge network
我在网上找到的所有示例都是在演示如何通过 alias/name 创建自己的网络连接到另一个容器时找到的。
# create the network
$ docker network create my-network
# create the containers and connect them to the network
$ docker run --name service-one --network my-network ...
$ docker run --name service-two --network my-network ...
Now within the service-one container we can connect to service-two by
its by its container name service-two (instead of localhost)! The same
is true from service-two to service-one using the latter’s alias.
我想在不创建自己的网络的情况下使用默认的bridge
网络来做同样的事情。 可能吗?如果不是,为什么?
我在默认 bridge
网络上用 --net-alias
和 --name
启动了一个容器:
docker run --rm --name=wa -dti -p 80:80 --net-alias=webapp docker/getting-started
现在我尝试从另一个容器内部通过两个容器都属于的默认 bridge
网络连接到它:
docker run --rm curlimages/curl https://webapp
curl: (6) Could not resolve host: webapp
docker run --rm curlimages/curl https://wa
curl: (6) Could not resolve host: wa
运气不好。但是通过 IP 地址连接时它工作得很好。
I wanted to do the same without creating my own network, using the
default bridge network. Is it possible? If not, why?
不幸的是,无法从 docker 文档中引用:https://docs.docker.com/network/bridge/#differences-between-user-defined-bridges-and-the-default-bridge
User-defined 网桥在容器之间提供自动 DNS 解析。
默认桥接网络上的容器只能通过 IP 地址相互访问,除非你使用 --link 选项,这被认为是遗留的。在 user-defined 桥接网络上,容器可以通过名称或别名相互解析 。
也来自:https://docs.docker.com/config/containers/container-networking/#dns-services
DNS 服务
默认情况下,容器会继承主机的 DNS 设置,如 /etc/resolv.conf 配置文件中所定义。使用默认桥接网络的容器会获得此文件的副本,而使用自定义网络的容器会使用Docker的嵌入式 DNS 服务器
我在网上找到的所有示例都是在演示如何通过 alias/name 创建自己的网络连接到另一个容器时找到的。
# create the network
$ docker network create my-network
# create the containers and connect them to the network
$ docker run --name service-one --network my-network ...
$ docker run --name service-two --network my-network ...
Now within the service-one container we can connect to service-two by its by its container name service-two (instead of localhost)! The same is true from service-two to service-one using the latter’s alias.
我想在不创建自己的网络的情况下使用默认的bridge
网络来做同样的事情。 可能吗?如果不是,为什么?
我在默认 bridge
网络上用 --net-alias
和 --name
启动了一个容器:
docker run --rm --name=wa -dti -p 80:80 --net-alias=webapp docker/getting-started
现在我尝试从另一个容器内部通过两个容器都属于的默认 bridge
网络连接到它:
docker run --rm curlimages/curl https://webapp
curl: (6) Could not resolve host: webapp
docker run --rm curlimages/curl https://wa
curl: (6) Could not resolve host: wa
运气不好。但是通过 IP 地址连接时它工作得很好。
I wanted to do the same without creating my own network, using the default bridge network. Is it possible? If not, why?
不幸的是,无法从 docker 文档中引用:https://docs.docker.com/network/bridge/#differences-between-user-defined-bridges-and-the-default-bridge
User-defined 网桥在容器之间提供自动 DNS 解析。
默认桥接网络上的容器只能通过 IP 地址相互访问,除非你使用 --link 选项,这被认为是遗留的。在 user-defined 桥接网络上,容器可以通过名称或别名相互解析 。
也来自:https://docs.docker.com/config/containers/container-networking/#dns-services
DNS 服务
默认情况下,容器会继承主机的 DNS 设置,如 /etc/resolv.conf 配置文件中所定义。使用默认桥接网络的容器会获得此文件的副本,而使用自定义网络的容器会使用Docker的嵌入式 DNS 服务器