【问题标题】:Nginx is not running in docker containerNginx 没有在 docker 容器中运行
【发布时间】:2021-10-29 03:07:43
【问题描述】:

我的 Docker 文件:-

FROM basecentos6
MAINTAINER user@gmail.com
RUN yum -y update && yum install -y epel-release && yum install -y nginx && yum install -y git && yum install -y java-1.8.0-openjdk
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

Docker 容器

sudo docker run -p80:80 -it withnginx6 bash

创建容器后,我正在使用以下命令检查 nginx 的状态

service nginx status

它说 nginx 已停止。

如何使用 CMD 选项使用 docker 文件使 nginx 在容器内运行

【问题讨论】:

  • 为什么不用nginx官方镜像容器?好吧,试试看docker logs id_containerhub.docker.com/_/nginx的日志
  • 你应该检查nginx进程是否正在运行?使用命令:ps aux | grep nginx 在容器中?

标签: docker nginx


【解决方案1】:

您已经按照 CMD 命令启动的顺序运行了容器,如果没有,您正在使用 bash 命令覆盖 init 进程。启动后,您可以打开与容器的连接并检查:

$ docker run withnginx6
$ docker exec -it ae0b5b04a3a1 bash # assuming id of the container that's running
  [root@ae0b5b04a3a1 /]# service nginx status
  nginx (pid  1) is running...

【讨论】:

  • 是的!!。有效。 .交互模式阻止 CMD 守护进程。
【解决方案2】:

service nginx status 

您正在检查运行 nginx 的本地系统。 但是你通过 docker 部署了你的 nginx,所以你应该通过

docker ps -a

其中 ps 显示所有当前正在运行的容器,-a 也显示停止的容器(因为错误)。您可以使用

调试和读取已停止容器的日志
docker logs <container_id>

您从 ps -a 之前的输出中获取 container_id 的位置

附带说明:有一个官方的 nginx 容器,你可以使用这个: https://hub.docker.com/_/nginx/

【讨论】:

    【解决方案3】:

    基于centos编写Dockerfile并安装nginx等,对于使用dockerized nginx并不是一个好习惯。 Nginx 有自己的官方 docker 镜像。您可以在this page 上阅读更多内容。

    我强烈推荐使用这种方法:

    1. 编写您的 nginx 配置文件。
    2. 使用
      docker run -v /path/to/conf:/etc/nginx/conf.d/mysite.conf -p 80:80 nginx 运行 nginx 容器

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2016-11-07
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多