我是 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
答案 0 :(得分:1)
默认情况下,nginx 镜像侦听容器内的 80 端口。
发布端口会创建一个从主机转发到容器的端口。这不会修改应用程序在容器内侦听的端口,因此如果您转发到未使用的端口,您将无法连接到任何内容。
在 Dockerfile 中公开端口是镜像创建者向运行镜像的人提供的文档,但不会修改容器网络或对容器内运行的应用程序正在执行的操作有任何控制。对于 docker,-P
标志使用该文档发布每个公开的端口。
要将主机上的端口 5000 映射到容器内侦听端口 80 的 nginx,请使用:
docker run -d -p 5000:80 --restart=always --name app mkd63/leo-electric