我有一个容器,我想杀死一个用来启动容器的进程. Dockerfile的最后一行是CMD [“python”,“app.py”]
我这样做而不是仅仅停止容器的原因是我要杀死进程,将bash压入容器,更改一些文件,然后再次启动进程.如果我杀了整个容器,那么我无法进入并更改文件.
如果有更好的方法来实现我的目标,那么我宁愿这样做.我是码头工人的新手,所以我可能会遗漏一些东西.
这就是我所做的,这是行不通的.
➜ $docker top mycontainer
UID PID PPID C STIME TTY TIME CMD
root 1447 1226 0 01:21 ? 00:00:04 python app.py
➜ $docker exec -it mycontainer ps -aux
USER PID %cpu %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.5 20.6 1225304 210344 ? Ssl 01:21 0:04 python app.py
root 61 0.0 0.2 15572 2208 ? Rs+ 01:35 0:00 ps -aux
➜ $docker exec -it mycontainer kill -9 1
➜ $docker top mycontainer
UID PID PPID C STIME TTY TIME CMD
root 1447 1226 0 01:21 ? 00:00:04 python app.py
最佳答案
我有一个类似的问题.我无法杀死进程1.
所以我必须先运行另一个进程.我选择使用bash进程,重启循环.
所以我必须先运行另一个进程.我选择使用bash进程,重启循环.
我正在使用Docker-compose,所以我的容器命令文件最终看起来像这样:
bash -c "echo 'Starting'; while true; do python -u app.py; sleep 4; echo 'restarting'; done"
直接使用Docker时可能类似.