docker - Azure 容器实例 - 如何让我的容器可以从外部访问和识别?
docker - Azure Container Instance - how to make my container accesable and recognized from outside?
我有 windows 容器,它应该访问外部 VM 数据库(不在容器中,假设是 VM1)所以我会为它们定义 l2bridge 网络驱动程序以便使用相同的虚拟网络。
docker network create -d "l2bridge" --subnet 10.244.0.0/24 --gateway 10.244.0.1
-o com.docker.network.windowsshim.vlanid=7
-o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_transparent
所以我想我们一定要坚持下去。
但现在我还需要让我的容器可以从外部访问,在端口 9000 上,从其他容器以及其他虚拟机。我想这必须根据它的名称(主机名)来完成,因为每次重启后 IP 都会更改。
我应该如何让我的容器可以从其他 VM2 虚拟机访问 - 我应该在网络配置中进行任何修改吗?或者我只是为了确保他们都使用相同的 DNS 服务器?
当然,我会公开端口,但我是否应该进行任何类型的额外网络配置以允许该特定端口上的流量?我读到默认情况下不允许网络流量,Windows 可能会阻止某些事情。
我将不胜感激。
谢谢
您似乎没有使用 Azure 容器实例,您只是 运行 Windows VM 中的容器。如果我是对的,让容器在外部可访问的最好方法是 运行 容器而不设置网络,只需要将端口映射到主机端口即可。然后可以通过暴露的端口从外部访问容器。这是示例命令:
docker run --rm -d -p host_port:container_port --name container_name image
然后就可以通过publicIP和VM的主机端口访问外部的容器了
更新:
好的,如果您使用 ACI 通过 docker-compose 部署容器,那么您需要知道 ACI 不支持 VNet 中的 Windows 容器。这意味着无法在 VNet 中使用私有 IP 创建 Windows 个容器。
如果您使用 Linux 容器,则可以将容器部署在 VNet 中,但您需要按照 here 的步骤使用。然后容器具有私有 IP,并且可以通过该私有 IP 在 VNet 中访问它。
我有 windows 容器,它应该访问外部 VM 数据库(不在容器中,假设是 VM1)所以我会为它们定义 l2bridge 网络驱动程序以便使用相同的虚拟网络。
docker network create -d "l2bridge" --subnet 10.244.0.0/24 --gateway 10.244.0.1
-o com.docker.network.windowsshim.vlanid=7
-o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_transparent
所以我想我们一定要坚持下去。 但现在我还需要让我的容器可以从外部访问,在端口 9000 上,从其他容器以及其他虚拟机。我想这必须根据它的名称(主机名)来完成,因为每次重启后 IP 都会更改。 我应该如何让我的容器可以从其他 VM2 虚拟机访问 - 我应该在网络配置中进行任何修改吗?或者我只是为了确保他们都使用相同的 DNS 服务器? 当然,我会公开端口,但我是否应该进行任何类型的额外网络配置以允许该特定端口上的流量?我读到默认情况下不允许网络流量,Windows 可能会阻止某些事情。
我将不胜感激。 谢谢
您似乎没有使用 Azure 容器实例,您只是 运行 Windows VM 中的容器。如果我是对的,让容器在外部可访问的最好方法是 运行 容器而不设置网络,只需要将端口映射到主机端口即可。然后可以通过暴露的端口从外部访问容器。这是示例命令:
docker run --rm -d -p host_port:container_port --name container_name image
然后就可以通过publicIP和VM的主机端口访问外部的容器了
更新:
好的,如果您使用 ACI 通过 docker-compose 部署容器,那么您需要知道 ACI 不支持 VNet 中的 Windows 容器。这意味着无法在 VNet 中使用私有 IP 创建 Windows 个容器。
如果您使用 Linux 容器,则可以将容器部署在 VNet 中,但您需要按照 here 的步骤使用。然后容器具有私有 IP,并且可以通过该私有 IP 在 VNet 中访问它。