在后台Docker容器中运行apache / php / nginx

我是docker的新手。 我正在尝试运行一个运行 Apache和PHP </ code>或 PHP-FPM </ code>的docker容器。</ p>

就像那样</ p>

  docker run -p 80:80 --name my-apache-php-app -v“$ PWD”:/ var / www / html php:7.0-apache 
</ code> < / pre>

它将STDIN / STDOUT附加到我的主机上</ p>

  docker run -d -p 80:80 --name my-apache-  php-app -v“$ PWD”:/ var / www / html php:7.0-apache 
</ code> </ pre>

似乎工作正常,但我读到了</ p >


按照设计,当用于运行容器的root
进程退出时,以分离模式启动的容器退出。</ p>
</ blockquote>

< p>这是否意味着如果我从远程ssh连接启动容器然后关闭它,docker容器将停止? </ p>

我正在构建我的自定义docker镜像基于</ p>


library / php / </ p>
</ blockquote >

我需要我的图像在后台自动启动,而不是在前台。</ p>

我怎样才能得到这种行为?</ p>
</ div >

展开原文

原文

I am new to docker. I am trying to run a docker container running Apache and PHP or PHP-FPM.

Like that

docker run -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.0-apache

And it attaches STDIN/STDOUT to my host machine

docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.0-apache

Seems to work fine, but I read that

By design, containers started in detached mode exit when the root process used to run the container exits.

Does it mean if I start container from remote ssh connection and then close it, the docker container will stop ?

I am building my custom docker image based on the

library/php/

And I need my image to start automatically in background, not in foreground.

How can I get this behavior ?

1个回答




按照设计,当用于运行容器的根进程退出时,以分离模式启动的容器退出。</ p >
</ blockquote>

此上下文中的根进程是容器内的根进程 </ em>,而不是用于 docker run </ code>的根进程 容器。 此过程通常是Dockerfile中的ENTRYPOINT或CMD。 对于Nginx,通常会看到类似的内容:</ p>

ENTRYPOINT ['nginx',' - g','daemon off'] </ code> </ p>
\ n

当nginx进程退出时,此容器将退出(除非你的nginx配置错误,否则不应该立即退出,否则会导致其他错误消失)。</ p>

如果你要 有这样的ENTRYPOINT:</ p>

ENTRYPOINT ['nginx',' - t'] </ code> </ p>

然后容器会 测试它找到的任何nginx confs,在STDOUT中给出结果,然后退出。</ p>
</ div>

展开原文

原文

By design, containers started in detached mode exit when the root process used to run the container exits.

The root process in this context is the root process inside the container, not the root process used to docker run the container. This process is typically an ENTRYPOINT or CMD in the Dockerfile. For Nginx, often you see something like:

ENTRYPOINT ['nginx', '-g', 'daemon off']

This container would exit when the nginx process exits (which shouldn't be immediately unless your nginx configuration is bad, or some other error kills it).

If you were to have an ENTRYPOINT like this:

ENTRYPOINT ['nginx', '-t']

Then the container would test any nginx confs it found, give you the result in STDOUT, and exit.

duanmeng3476
duanmeng3476 我会说是的,它应该没问题。
大约 3 年之前 回复
dqwh1119
dqwh1119 谢谢你的回答,在我的情况下使用-d选项是否合适,它是否满足我的要求?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐