Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 以交互方式启动docker容器_Linux_Docker - Fatal编程技术网

Linux 以交互方式启动docker容器

Linux 以交互方式启动docker容器,linux,docker,Linux,Docker,我有一个非常简单的dockerfile,只有一行,即“来自ubuntu”。我通过命令docker build-t ubuntu\从这个dockerfile创建了一个图像。 我知道我可以从这个图像创建一个新的docker容器,并使用命令以交互方式运行它 docker run-它是我的新容器 我可以稍后使用命令启动这个新容器 启动我的新容器 据我所知,我还应该能够通过它以交互方式使用这个容器 start-i我的新容器 但是,它不起作用。它只是运行和退出。我不能像使用run时那样访问容器的命令提示符。

我有一个非常简单的dockerfile,只有一行,即“来自ubuntu”。我通过命令
docker build-t ubuntu\从这个dockerfile创建了一个图像。

我知道我可以从这个图像创建一个新的docker容器,并使用命令以交互方式运行它
docker run-它是我的新容器

我可以稍后使用命令启动这个新容器
启动我的新容器

据我所知,我还应该能够通过它以交互方式使用这个容器
start-i我的新容器


但是,它不起作用。它只是运行和退出。我不能像使用run时那样访问容器的命令提示符。我做错了什么?

您可以输入一个运行中的容器:

docker exec -it <container name> /bin/bash
如果容器中没有
bash
,则可以将
bash
替换为
sh

如果需要显式使用UID,如root=UID 0,可以指定:

docker exec -it -u 0 my_new_container /bin/bash

它将把您记录为
root

如果我理解正确,您希望查看终端中容器中的日志,与使用
docker run运行图像时相同。如果是这样的话,那就试试看

docker start -a my_docker_container

谢谢你的评论。但是,容器没有运行。如果我执行“启动我的新容器”命令,容器将立即启动并退出。这与执行“docker run--name mybox1 busybox”然后执行“docker start mybox1”相同。(在第一种情况下,您可以让它与“docker run-it--name mybox1 busybox”交互工作,但在第二种情况下,我不知道如何操作。)如果希望容器不退出,你需要确保任何正在运行的主进程都在前台,并且永远不会退出..但有时我需要关闭我的计算机(包括容器),并希望能够以交互方式再次启动它…那么如何以交互方式启动它呢?“您需要确保正在运行的任何主进程都在前台,并且永远不会退出…”谢谢!您已经知道如何以交互方式启动容器(例如,使用TTY)。了解Docker的工作原理,从而了解Docker的工作原理。您无法与已退出的内容交互。。因此,您需要让容器无限期地运行
然后您可以
执行
命令或shell以进入i,或者
附加到正在运行的容器。。但是您需要从概念上阅读文档,将Docker容器视为单个进程及其所有数据和运行时依赖项的包装可能更容易。您的容器正在运行的进程是什么?不确定您的意思。容器正在运行ubuntu…“ubuntu”不是应用程序。更典型的设置是让容器运行Nginx、PostgreSQL或您编写的Flask应用程序;这些东西没有交互式shell,您不需要“登录”它们。删除和重新创建容器也是非常常规的:我会使用
dockerrm;在几乎所有情况下,docker run
over
docker start
docker start -a my_docker_container