【问题标题】:Run docker image on specific port在特定端口上运行 docker 映像
【发布时间】:2021-08-22 10:46:46
【问题描述】:

我是 Docker 新手。

我正在尝试使用 nginx 基础映像对一个简单的静态网站进行 dockerize。 当我运行时,应用程序在本地服务器上运行良好。

docker run -d -P <container-name> 所以,这里的应用程序在某个随机端口上运行,我可以看到我的应用程序正在运行。 同时,当我尝试使用以下命令指定端口时:

docker run -d -p 5000:5000 --restart=always --name app mkd63/leo-electricals

localhost:5000 的页面显示站点无法访问。

我的 Dockerfile 是:

FROM nginx:alpine
COPY . /usr/share/nginx/html
EXPOSE 5000

【问题讨论】:

    标签: docker nginx dockerfile docker-registry


    【解决方案1】:

    默认情况下,nginx 镜像监听容器内的 80 端口。

    发布端口会创建一个从主机转发到容器的端口。这不会修改应用程序在容器内侦听的端口,因此如果您转发到未使用的端口,您将不会连接到任何东西。

    在 Dockerfile 中公开端口是镜像创建者向运行镜像的人提供的文档,但不会修改容器网络,也不会控制容器内运行的应用程序正在做什么。使用 docker,-P 标志使用该文档发布每个公开的端口。

    要将主机上的 5000 端口映射到 nginx 监听容器内的 80 端口,请使用:

    docker run -d -p 5000:80 --restart=always --name app mkd63/leo-electric
    

    【讨论】:

    • 谢谢!那解决了它。那么,nginx 镜像只会监听 80 端口吗?像,我们不能改变它吗?
    • @Mkd63 您可以更改它,但那是在 nginx 配置中,并且您只使用新内容更新了图像,保留了相同的配置。配置位于容器内的/etc/nginx/conf.d/default.conf
    • 请注意,更改 nginx 配置不会更改父映像中现有的“暴露”端口定义,因此使用该映像的人可能会混淆看到只有一个工作的两个暴露端口。
    猜你喜欢
    • 2017-07-30
    • 1970-01-01
    • 2017-10-14
    • 2020-09-06
    • 2017-04-20
    • 2021-01-01
    • 2021-08-19
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多