“码头主管”只能用于运行容器,但运行容器的含义是什么?这是否意味着容器应该在计算什么?还是关于我为容器定义的命令的问题?为什么我的TensorFlow容器总是处于停止状态?
在使用“docker”构建tensorflow容器后,容器自动停止。我需要重新启动它,然后对它执行命令。为什么在我构建容器之后,容器就不能一直运行?
docker run -it --runtime=nvidia tensorflow/tensorflow:latest-gpu-py3然后它会弹出一个bash,我可以用它来控制容器。但在我离开后,集装箱停了下来。这意味着,我只能使用docker ps -a来查看我的容器,但是docker ps不能。如果我想再次使用我的容器,我必须重新启动容器。
UPDATE1: --如果我想创建像VM这样的容器,就不能使用docker run和诸如python ..这样的时态[command]。在命令完成后,容器将永久失去控制。docker restart无法再次启动容器。因此,docker exec不能应用于它。而不是,使用bash或nothing作为[command]可以创建一个容器,可以重新启动,因此可以与docker exec一起应用。
UPDATE2: docker run -d -it可以创建一个正在运行的容器(但是bash不会弹出,即使使用bash也不会弹出)。直接使用docker exec -it container_name bash可以再次控制正在运行的容器,而不需要docker restart。此时,退出bash将不会停止容器。
发布于 2019-04-04 09:01:21
docker ps -a和docker ps之间的区别正是您要寻找的:
来自文献资料:
--all , -a      Show all containers (default shows just running) 所以
docker ps只为您提供正在运行的容器docker ps -a还向您显示已停止的因此,如果您希望容器能够长时间运行(就像对web服务器一样),那么容器命令可能会出现问题,而不是保持容器正常运行。
还请注意,如果您使用选项-ti运行容器,就像您做的那样,您会得到一个交互式的tty。
--tty , -t              Allocate a pseudo-TTY
--interactive , -i      Keep STDIN open even if not attached这基本上意味着,一旦退出交互式上下文,容器就会关闭。
在分离模式下运行它,使用选项-d,可能是您要寻找的
docker run -d --runtime=nvidia tensorflow/tensorflow:latest-gpu-py3相关文件:
--detach , -d       Run container in background and print container ID发布于 2019-04-04 09:04:30
当在容器中运行活动进程时,容器正在运行。运行此tensorflow容器时,由于没有正在运行的进程,它将退出
如果你要跑
docker run -it --runtime=nvidia tensorflow/tensorflow:latest-gpu-py3 bash或
docker run -it --runtime=nvidia tensorflow/tensorflow:latest-gpu-py3 python <python script name>然后容器将作为一个进程运行bash/python脚本,因此在该进程运行时保持处于运行状态。
使用以下方式查看正在运行的进程:
docker ps查看所有容器(包括已停止/退出的任务),其中包括:
docker ps -ahttps://stackoverflow.com/questions/55511735
复制相似问题