Dockerfile:
FROM registry.access.redhat.com/rhel
WORKDIR /usr/src
RUN yum-config-manager --save --setopt=rhel-7-server-rt-beta-rpms.skip_if_unavailable=true
# Install Nginx Repository
RUN yum install -y http://nginx.org/packages/rhel/7/noarch/RPMS/nginx-release-rhel-7-0.el7.ngx.noarch.rpm
# Install
RUN yum install -y nginx
# Clean up YUM
RUN yum clean all
# Disable Nginx to run on background
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
# Expose the HTTP & HTTPS ports
EXPOSE 8080
=================================
Docker 构建
docker build -t nginxt .
=================================
Docker 运行
docker run -it -p 8080:8080 nginxt
=================================
[root@ip-20-0-0-86 friday]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7eaaf772b94a nginxt "/bin/bash" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp elegant_kalam
[root@7eaaf772b94a src]# curl localhost:8080
curl: (7) Failed connect to localhost:8080; Connection refused
答案1
NGINX Docker 镜像默认使用端口 80 来监听 http 连接。
如果您在 Dockerfile 中使用 EXPOSE 8080,则您没有设置 NGINX 监听的端口,您只是说嘿我的容器可能监听到端口 8080 的连接,但 NGINX 不会使用 8080,因此您应该更改 NGINX 配置文件。
如果您想使用端口 8080,则可以使用以下 docker 命令:
docker run -it -p 8080:80 nginxt
这样,主机上的 8080 端口就会转发到 NGINX 容器的 80 端口。您也可以在 Dockerfile 中将 EXPOSE 从 8080 更改为 EXPOSE 80。
供你参考: