我试图仅在一段时间内该Nginx实例的access.log中没有任何活动之后才停止运行Nginx的Docker容器。
是否可以从容器内部停止Docker容器?我能想到的另一种解决方案是在主机OS上运行一个cron来检查,/var/lib/docker/aufs/mnt/[container id]/但我计划启动许多容器,并且不希望保留ID列表。
当容器中的主进程停止时,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)
| 归档时间: |
|
| 查看次数: |
3359 次 |
| 最近记录: |