我试图阻止运行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
$