当没有其他任何工作时,如何在不退出终端的情况下退出命令行进程 运行?

How do exit without quitting Terminal a command line process running when nothing else works?

我正在使用 Docker 并且我 运行 一个命令让我进入 Docker 的日志 - 看起来像。当我进入时,我无法回到 shell 提示符。我怀疑这可能与 com.docker.cli 相关,尽管 docker-docs 并没有对大胆的退出说太多。
我已经尝试了所有我能找到的东西,见列表。重现问题的方法是:

docker run -e  MYSQL_ROOT_PASSWORD=mypassword mysql

按 Ctrl + opt (Alt) + T 会带来进程 运行ning。

尝试过

(上面有Ctrl,也有opt和cmd,没有cmd+Q 这将退出终端)

所有这些和其他以及它们的完美组合。

我建议使用上面的命令重现 Docker 和终端的问题,然后找到一些解决方案。
我们的想法是了解更多关于终端中的此日志以及如何退出并返回到 shell 提示符的信息。 提前致谢!

听起来 运行 来自 tmux 对你来说可能是个不错的选择,除非我误解了你的意思。然后您可以退出并返回到 运行,而无需停止您从命令行启动的进程。

Run container in background using detached mode.

-d docker run 命令的选项应该有效。

docker run -d -e  MYSQL_ROOT_PASSWORD=mypassword mysql

这将在后台 运行 容器,检查其是否 运行ning 并使用 docker ps.

捕获容器 ID

现在要进入 运行ning 容器的 shell 使用 docker exec 命令。

docker exec -it <container-id> /bin/sh

要检查日志,请使用 docker logs <container-id> 命令,假设您使用默认的 json 文件日志驱动程序安装了 docker。

在单独的终端中 window、运行 docker ps。在那里寻找 运行ning 容器的行,具有自动生成的名称和图像 mysql。那是你手动docker run.

的容器

仍然在那个单独的终端 window、运行 docker stop adjective_name 中生成容器名称(或者,等效地,12 位十六进制数字容器 ID)。这应该会在第一个终端 window 中带回 shell 提示符。然后您可以 docker rm adjective_name 清理停止的容器。

下次:

  • 您可以显式docker run --name指定容器使用的名称;然后,您可以在所有 docker 命令中使用该名称。
  • 您可以使用docker run -d在后台启动容器,然后docker logs container_name查看它的日志。
  • 您可以交替使用 docker run -it 将容器的标准输入连接到控制台,然后 Ctrl+C 应该可以工作通常。

您实际上不能在数据库服务器的控制台上进行太多输入,所以我通常建议在后台启动它。您可以使用主机上的普通 mysql 命令行客户端与其交互(确保添加 docker run -p 选项以使其端口可访问)。