Docker 容器和Shell

Docker 容器和Shell

默认情况下,当你启动一个容器时,你也会使用一个 shell命令 来启动容器,如下所示。这是我们在前面的章节中使用容器时看到的。

Docker 容器和Shell

sudo docker run –it centos /bin/bash

我们使用这个命令创建一个新的容器,然后使用Ctrl+P+Q命令退出容器。这样确保即使我们从容器退出后,容器仍然存在。

我们可以使用Docker的 ps 命令来验证容器仍然存在。如果我们直接退出容器,那么容器本身将被销毁。

现在有一种更简单的方法来附加到容器并干净地退出它们,而不需要销毁它们。实现这一方式的一种方法是使用 nsenter 命令。

在运行 nsenter 命令之前,您需要先安装 nsenter 镜像。可以使用以下命令来完成:

docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

Docker 容器和Shell

nsenter

此方法允许在不退出容器的情况下连接到容器。

语法

nsenter –m –u –n –p –i –t containerID command

选项

  • -u 用于指定 Uts namespace。
  • -m 用于指定 mount namespace。
  • -n 用于指定 network namespace。
  • -p 用于指定 process namespace。
  • -i 用于使容器以交互模式运行。
  • -t 用于连接容器的 I/O 流到宿主操作系统。
  • containerID - 这是容器的 ID。
  • Command - 这是要在容器内运行的命令。

返回值

示例

sudo nsenter –m –u –n –p –i –t 2978 /bin/bash

输出

Docker 容器和Shell

从输出结果中,我们可以观察到以下几点−

  • 当我们执行 nsenter 命令时,提示符会直接变成 bash shell

  • 然后我们执行 exit 命令。通常情况下,如果你没有使用 nsenter 命令,容器会被销毁。但是你会注意到,当我们运行 nsenter 命令时,容器仍然在运行。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程