停止Nginx Docker容器

0x6*_*C77 5 nginx docker

我试图仅在一段时间内该Nginx实例的access.log中没有任何活动之后才停止运行Nginx的Docker容器。

是否可以从容器内部停止Docker容器?我能想到的另一种解决方案是在主机OS上运行一个cron来检查,/var/lib/docker/aufs/mnt/[container id]/但我计划启动许多容器,并且不希望保留ID列表。

chr*_*ian 4

当容器中的主进程停止时,docker 容器也会停止。

我设置了一个小 dockerfile 和一个启动脚本来展示这在您的情况下如何工作:

Dockerfile

FROM nginx
COPY start.sh /
CMD ["/start.sh"]
Run Code Online (Sandbox Code Playgroud)

启动文件

#!/bin/bash
nginx &
sleep 20
# replace sleep 20 with your test of inactivity 
nginx stop
Run Code Online (Sandbox Code Playgroud)

构建容器,运行并测试

$ docker build -t ng .

$ docker run -d ng 

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a373e721da7        ng:latest           "/start.sh"         4 seconds ago       Up 3 seconds        443/tcp, 80/tcp     distracted_colden   
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a373e721da7        ng:latest           "/start.sh"         16 seconds ago      Up 16 seconds       80/tcp, 443/tcp     distracted_colden   
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$
Run Code Online (Sandbox Code Playgroud)