【问题标题】:unsupported port number: 0不支持的端口号:0
【发布时间】:2022-01-10 10:25:54
【问题描述】:

如果我们在 dockerfile 或 docker-compose 文件中指定单个端口,如下所示

  sshd:
    build: ./backend/mock/sshd
    volumes:
      - ./docker/sftp_upload_dir:/root/upload_dir
    ports:
      - '22'. #<----------

并使用带有 nerdctl 命令的 docker-compose 文件

nerdctl compose up

然后 nerdctl 命令将退出并出现以下错误

FATA[0000] unsupported port number: 0  

【问题讨论】:

    标签: docker-compose port containerdctl nerdctl


    【解决方案1】:

    根据 docker 文档https://docs.docker.com/compose/compose-file/compose-file-v3/#ports

    There are three options:
    
    Specify both ports (HOST:CONTAINER)
    Specify just the container port (an ephemeral host port is chosen for the host port).
    

    因此选择0作为产生错误的主机端口,因此解决方案是显式指定主机端口,如下所示

      sshd:
        build: ./backend/mock/sshd
        volumes:
          - ./docker/sftp_upload_dir:/root/upload_dir
        ports:
          - '22:22' #<<<<---------
    

    请注意,我在最后一行的22 之前明确添加了22:,以使其与nerdctl 一起使用。它默认使用 docker-compose up。

    【讨论】:

    • 那么为什么'22'(无句号)不起作用?在链接的文档中,它显示'3000' 这符合规则“仅指定容器端口(为主机端口选择一个临时主机端口)。”
    • 好评论,我忘了明确提到我将它与nerdctl 命令一起使用,而不是与docker 一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2013-02-17
    • 2011-11-13
    相关资源
    最近更新 更多