【问题标题】:How do I map a port on a container to the host?如何将容器上的端口映射到主机?
【发布时间】:2019-05-21 22:08:15
【问题描述】:

我正在尝试运行由以下 Dockerfile 描述的容器:

FROM node:11.4.0

RUN npm install -g sh
RUN npm install -g json-server

WORKDIR /data
VOLUME /data
COPY db.json /data

CMD json-server --watch db.json --port 3001

并通过运行指定监听端口:

 docker run -it -p 3001:3001 abelalejandro/json-server:final

容器似乎运行良好,json-server 告诉我它正在端口 3001 上服务我的请求,但在浏览 http://localhost:3001 时我无法获得任何乐趣

我是否在发布/公开端口时遗漏了什么?

【问题讨论】:

    标签: docker dockerfile json-server


    【解决方案1】:

    它绑定到localhost 而不是0.0.0.0(任何主机)。

    你可以通过设置来改变它:

    CMD json-server --watch db.json --host 0.0.0.0 --port 3001
    

    我假设您使用的是https://github.com/typicode/json-server

    【讨论】:

    • 作为一个好的做法,我建议将 EXPOSE 指令添加到您的 Dockerfile 中,这将为运行容器的用户提供良好的文档。尝试使用/不使用 EXPOSE 指令构建图像并执行 docker image inspect abelalejandro/json-server:final 以查看附加到图像的更多元数据。
    猜你喜欢
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2021-02-14
    • 1970-01-01
    相关资源
    最近更新 更多