zoukankan      html  css  js  c++  java
  • docker——nginx运行起不来或者说起来了又挂了

      记得刚开始玩docker的时候,想着docker上运行一个nginx代理,于是写了个Dockerfile:

      FROM nginx:latest
    
      WORKDIR .
      COPY demo.conf /etc/nginx/conf.d/demo.conf   EXPOSE 80   CMD [ "nginx" ]

      然后docker build生成,docker run运行,发现怎么都起不来,或者说起来了又挂了,到/var/lib/docker/containers目录下查看日志发现启动也是正常的:

        #生成
        sudo docker build -t nginx:v1 .
        #运行
        sudo docker run -id nginx:v1
       #或者运行
       sudo docker run -id nginx:v1 nginx

      

       在百度查到,nginx默认是后台启动的,一般的我们启动nginx进程就是直接输入nginx,然后回车,但是docker的CMD要求命令能将进程挂起来,也就是hold住,显然,正常使用nginx命令启动不满足这个条件

       后来查到,添加daemon off;配置可以让nginx在前台启动,于是我修改Dockerfile:  

      FROM nginx:latest
    
      WORKDIR .
      COPY demo.conf /etc/nginx/conf.d/demo.conf
      EXPOSE 80
       RUN echo "daemon off;" >> /etc/nginx/nginx.conf
    
      CMD [ "nginx" ]

      然后build&run,果然nginx完美的起来了!

      其实我们是可以直接使用nginx镜像的,但是为什么使用Dockerfile就不行了呢?于是我直接使用nginx镜像创建一个容器,然后ps查看容器启动的命令:  

        #创建一个容器
        sudo docker run -id nginx:latest
        #查看运行中的容器状态,--no-trunc是显示所有的信息,不进行截取
        sudo docker ps --no-trunc

      结果显示:

      

       可以看到它是使用下面命令启动的:  

        /docker-entrypoint.sh nginx -g 'daemon off;'

      注意后面的daemon off;,于是我将Dockerfile改成:  

        FROM nginx:latest
    
        WORKDIR .
        COPY demo.conf /etc/nginx/conf.d/demo.conf
        EXPOSE 80
    
        CMD [ "nginx", "-g", "daemon off;" ]

      成功启动!

      另外,我们也可以在docker run时覆盖这个CMD,如:  

        #注意,这里的daemon off;需要使用引号包起来!
        sudo docker run -id nginx:v1 nginx -g 'daemon off;'

      其实,我们完全没有必要在Dockerfile里面添加一个CMD命令启动!因为添加了就是覆盖了nginx镜像原来的命令!

      

  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/shanfeng1000/p/14060545.html
Copyright © 2011-2022 走看看