我有两个通过docker创建的容器,并具有以下设置:
docker-compose.yml文件:
version: "3.7"
services:
web:
image: img_web
container_name: cont_web
svcs:
image: img_svcs
container_name: cont_svcs
depends_on:
- web
img_web的Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot
img_svcs的Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot
在docker-compose up -d
之后,并从cont_svcs容器中,我可以:
通过IP Ping cont_web
通过主机名Ping cont_web(容器ID:bf4001be1e84自动生成。)
但是我不能Ping cont_web容器的别名(web)
我检查了两个容器,在网络部分可以看到以下内容:
"Networks": {
"test_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"bf4001be1e84",
"web"
],
...
两个容器都连接到'test_default'驱动程序。
NB:甚至我也无法通过计算机本身内的Web别名来对Web计算机执行ping操作。
非常感谢您的帮助和反馈。
谢谢山姆
尝试添加一个明确的NAT网络以用于您的部署。为此,请在docker-compose文件末尾添加以下内容-
networks:
default:
external:
name: nat
现在,尝试使用服务名称对服务进行ping操作。
如果不起作用,则可能是您的本地计算机上安装了安全防火墙或Internet Security应用程序,这很可能阻止了dockerd.exe DNS服务。尝试实施一些规则以允许与基于[[docker的服务有关的TCP和UDP端口。
此外,您也可以尝试这种解决方法来正确解析DNS- https://github.com/docker/for-win/issues/1976#issuecomment-418151244