使用命令行时Docker不公开端口

时间:2019-07-24 12:21:24

标签: docker asp.net-core

我正在尝试启动一个托管网站的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'

1 个答案:

答案 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,该命令在前台运行,因此您会在终端中看到日志。