【问题标题】:Docker exit from an attached containerDocker 从附加容器中退出
【发布时间】:2020-05-23 07:22:12
【问题描述】:

我现在正在学习 docker 基础知识并坚持这一点: 我创建了一个 docker 容器:

 docker container run -d -t --name t_d_container linux
fd91f24a79e007d3676b2ab2344b34765829b918672abf4c7995836ad68d0f35



docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
fd91f24a79e0        oraclelinux         "/bin/bash"         6 seconds ago       Up 5 seconds                                   t_d_container

docker container attach t_d_container
[root@fd91f24a79e0 /]# exit

但是当我从容器中退出时,它会继续运行并等待我提供输入。所以我每次都得按CTRL+C。

然后,我尝试了

docker container exec -it t_d_container /bin/bash

正如预期的那样,现在有 2 个进程正在运行 bash:

[root@fd91f24a79e0 /]# ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0  0 06:49 pts/0    00:00:00 /bin/bash

root        27     0  0 07:08 pts/1    00:00:00 /bin/bash

还有其他方法可以退出后台运行的容器吗?

我进一步挖掘。附加到容器后,我无法在附加的容器上执行任何命令。

 docker container attach ac9d50c03304
 [root@ds001 /]# hostname

它就在那儿等我按 CTRL+C。 Docker版本:19.03.9

【问题讨论】:

  • docker stop <container_name> 呢?
  • docker container stop 成功停止了容器。但我不想在退出时停止容器。我想让它在后台运行。
  • 不...我想让容器一直运行。 stop 就如名字所说的那样。
  • 你真的点击链接阅读了吗?我阅读了您的评论,了解您在寻找什么,并提供了与我的第一条评论不同的解决方案。

标签: docker containers


【解决方案1】:

如果您以交互模式 (-it) 启动容器,请依次尝试以下步骤:

  1. Ctrl+p
  2. Ctrl+q

如果您已在守护程序模式 (-d) 下启动容器并附加到它,您可以退出它,它仍将在后台运行。

【讨论】:

  • 如果我使用 Citrix 连接到远程服务器,这将不起作用。此外,当您尝试在附加容器上运行任何命令时,它们根本不起作用。我必须按 CTRL+C 才能退出容器。
  • 实际上,您可以通过其 ID/名称在正在运行的容器中运行任何命令:docker exec -it echo "Hello container!"。但是如果你的容器处于停止状态,你需要先启动它。
  • 假设你想在一个容器上构建一个数据库服务器。您将必须保持 24 小时运行。此外,应启用对容器的 shell 登录以执行 sql 命令。因此,我在这里尝试构建一个容器,该容器将始终与托管在其上的 oracle DB 一起运行,并且其他团队成员应该具有 shell 访问权限来管理数据库,而不是每次都运行 docker container exec 。
  • docker exec -it <containername> bash(或任何可用的外壳......)使您可以外壳访问已经运行数据库的容器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2015-04-30
  • 1970-01-01
  • 2018-08-28
  • 2019-02-09
  • 2019-09-26
  • 2017-05-20
相关资源
最近更新 更多