我正在尝试启动一个托管网站的ASP.NET Core容器。 使用以下命令行时,它不会暴露端口
docker run my-image-name -d -p --expose 80
或
docker run my-image-name -d -p 80
启动时,日志将显示:
Now listening on: http://[::]:80
所以我认为应用程序未绑定到特定地址。
但是在使用以下docker compose文件时可以工作
version: '0.1'
services:
website:
container_name: "aspnetcore-website"
image: aspnetcoredocker
ports:
- '80:80'
expose:
- '80'
答案 0 :(得分:1)
您需要确保在按the docker run docs中所述命名-d -p 80
之前,将所有选项(image
)传递给docker命令。表示法是:
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
因此,请尝试以下操作:
docker run -d -p 80 my-image-name
否则,参数将用作容器内的命令/参数。因此,基本上使用-d -p 80
的附加参数运行docker映像的入口点,而不是将它们传递给docker命令本身。因此,在您的示例中,泊坞窗守护程序仅不接收参数-d
和-p 80
,因此未将端口映射到主机。您还可以注意到,由于未收到-d
,该命令在前台运行,因此您会在终端中看到日志。