停止Nginx Docker容器

我试图阻止运行Nginx的Docker容器,只有在该Nginx实例的access.log中没有活动一段时间之后.

是否可以从容器内部停止Docker容器?我能想到的另一个解决方案是在主机操作系统上运行一个cron来检查/ var / lib / docker / aufs / mnt / [container id] /但是我打算启动大量的容器而不愿意必须保留一份ID列表.

最佳答案 当容器中的主进程停止时,docker容器停止.

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

Dockerfile

FROM nginx
COPY start.sh /
CMD ["/start.sh"]

start.sh

#!/bin/bash
nginx &
sleep 20
# replace sleep 20 with your test of inactivity 
nginx stop

构建容器,运行和测试

$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
$
点赞