这是我为在Dockerfile
上安装httpd
而创建的centos
:
#Installing HTTPD
FROM centos:latest
MAINTAINER xxx@gmail.com
RUN yum install -y httpd
EXPOSE 80
#ENTRYPOINT ["systemctl"]
ENTRYPOINT ["/usr/sbin/httpd"]
构建之后,当我运行容器时,我可以看到在此容器中运行的httpd
进程太多了:
docker run -d -p 80:80 httpd:4.0 -DFOREGROUND
Docker top
命令的输出:
UID PID PPID C STIME TTY TIME CMD
root 2457 2443 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2474 2457 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2475 2457 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2476 2457 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2477 2457 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2478 2457 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2491 2457 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2492 2457 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2493 2457 0 04:26 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 2512 2500 0 04:27 pts/0 00:00:00 /bin/bash
apache 2532 2457 0 04:27 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
请让我知道为什么这么多httpd进程在运行,以及如何只有一个进程有PID 1?
答案 0 :(得分:2)
Apache运行多个进程以准备快速赶上客户端请求,因为生成服务器进程很慢,所以最好在请求进入时准备就绪。
您可以在httpd.conf
到StartServers,MinSpareServers,MaxSpareServers和ServerLimit指令中配置其号码。