我无法从浏览器中获取容器IP地址。
代码段
PS H:\DevAreaLocal\COMPANY - RAD PROJECTS\DockerApp\WebDockerCoreApp> docker-compose build
Building webdockercoreapp
Step 1/5 : FROM microsoft/aspnetcore:1.1
---> 4fe9b4d0d093
Step 2/5 : WORKDIR /WebDockerCoreApp
---> Using cache
---> b1536c639a21
Step 3/5 : COPY . ./
---> Using cache
---> 631ca2773407
Step 4/5 : EXPOSE 80
---> Using cache
---> 94a50bb10fbe
Step 5/5 : ENTRYPOINT dotnet WebDockerCoreApp
---> Using cache
---> 7003460ebe84
Successfully built 7003460ebe84
Successfully tagged webdockercoreapp:latest
PS H:\DevAreaLocal\COMPANY - RAD PROJECTS\DockerApp\WebDockerCoreApp> docker inspect --format="{{.Id}}" 7003460ebe84
获得Bellow ID
SHA256:7003460ebe84bdc3e8647d7f26f9038936f032de487e70fb4f1ca137f9dde737
如果我运行bellow命令
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" 7003460ebe84
得到响应
模板解析错误:模板:: 1:19:在< .NetworkSettings.Net执行“”...>:地图没有关键字“NetworkSettings”的条目
Docker.Compose.yml文件设置
version: '2.1'
services:
webdockercoreapp:
image: webdockercoreapp
build:
context: ./WebDockerCoreApp
dockerfile: Dockerfile
ports:
- "5000:80"
networks:
default:
external:
name: nat
通过运行“docker network ls
”
得到了响亮的回应
NETWORK ID NAME DRIVER SCOPE
f04966f0394c nat nat local
3bcb5f906e01 none null local
680d4b4e1a0d webdockercoreapp_default nat local
当我运行“docker network inspect webdockercoreapp_default
”
得到以下回复
[
{
"Name": "webdockercoreapp_default",
"Id": "680d4b4e1a0de228329986f217735e5eb35e9925fd04321569f9c9e78508ab88",
"Created": "2017-12-09T22:59:55.1558081+05:30",
"Scope": "local",
"Driver": "nat",
"EnableIPv6": false,
"IPAM": {
"Driver": "windows",
"Options": null,
"Config": [
{
"Subnet": "0.0.0.0/0",
"Gateway": "0.0.0.0"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.windowsshim.hnsid": "ad817a46-e7ff-4fc7-9bb9-d6cf17820b8a"
},
"Labels": {
"com.docker.compose.network": "default",
"com.docker.compose.project": "webdockercoreapp"
}
}
]
答案 0 :(得分:0)
当您运行命令$(this).children(".comment").children(".options_bar").children(".reply").on("click",function () {
$(this).parent().parent().parent().children(".reply_container").children(".reply_form").children(".reply_button").on("click",function (e) {
e.preventDefault();
var $this = $(this);
$.ajax({
context:$this,
url:"/yyqGS/public/form/get_clicked_index.php",
type:"POST",
data:{index:'-1' ,index2:$cid},
success:function () {
//alert("1");
//var $this = $(this);
$this.parent().attr("action","/yyqGS/public/form/reply.php?c_id=" + $cid);
$this.parent().submit();
$.ajax({
url:"/yyqGS/public/form/get_url.php",
type:"GET",
success:function (d1) {
alert("1");
var $data = d1.split(",");
location.href = "/yyqGS/public/form/reply_notification2.php?id="+$data[0]+"&country="+$data[1]+"&tid="+$data[2]+"&cid="+$data[3]+"&rid="+$data[4]+"&cuser="+$data[5];
},
fail:function () {
alert("f");
}
})
}
})
});
});
时 - 您当前正在针对图像ID 而不是容器ID 运行此操作。< / p>
图像是您构建的静态资产,以及运行哪些容器。因此,您需要做的是首先通过以下方式将图像联机:
docker inspect --format="{{.Id}}" 7003460ebe84
现在,您可以通过以下方式查看正在运行的容器:
docker-compose up
找到你想要的容器;让我们说出docker ps
现在您将能够针对容器运行原始命令 - 而不是图像。
abcd1234
这将返回容器的完整SHA;因为你最初询问网络设置;你可以运行类似的东西:
docker inspect --format="{{.Id}}" abcd1234
如果您不确定您的网络名称是什么(看起来应该是docker inspect -f "{{ .NetworkSettings.Networks.your_network_here.IPAddress }}" abcd1234
),只需执行完整nat
并查看输出并根据需要调整过滤器。< / p>
答案 1 :(得分:0)
使用Docker文件更改命令可解决此问题。 Bellow是代码片段
由于我们必须构建我们的项目,我们创建的第一个容器是一个 临时容器,我们将用它做那个,然后 最后把它丢弃。
接下来,我们将.csproj文件复制到我们的临时容器中 '/ app'目录。我们这样做是因为.csproj文件包含一个 我们项目需要的包参考列表。复制此文件后, dotnet将从中读取然后出去获取所有内容 我们项目需要的依赖项和工具。
一旦我们删除了所有这些依赖项,我们就会将其复制到 临时容器。然后我们告诉dotnet发布我们的应用程序 使用发布配置并指定输出路径。
我们应该已经成功编译了我们的项目。现在我们需要建立 我们的最终容器。
- 醇>
这个最终容器的基本图像类似但不同 上面的FROM命令 - 它没有能够的库 构建一个只运行的ASP.NET应用程序。
脑震荡:
我们现在已成功执行所谓的多阶段构建。 我们使用临时容器来构建我们的图像然后移过来 将已发布的dll放入另一个容器中,以便最小化 最终结果的足迹。我们希望这个容器有 绝对最低要求运行的依赖项;如果我们一直跟着 使用我们的第一张图片,然后它将与其他图像一起打包 这些层(用于构建ASP.NET应用程序)并不重要 会增加我们的图像尺寸。
FROM microsoft/aspnetcore-build:1.1 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM microsoft/aspnetcore:1.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "CoreApiDockerSupport.dll"]
使用.dockerignore
文件
bin\
obj\
注意:如果您使用内置docker支持(使用docker-compose.yml
和docker-compose.ci.build.yml
)文件从Visual Studio IDE创建Asp.Net核心项目,则上述设置将起作用或没有它。