默认情况下,启动容器时还将使用Shell命令,如下所示:这是我们在前面几章中使用容器时所看到的
在上面的屏幕截图中,您可以观察到我们发出了以下命令-
sudo docker run –it centos /bin/bash
我们使用此命令创建了一个新容器,然后使用Ctrl + P + Q命令退出了该容器,它确保即使我们从容器中退出后,该容器仍然存在。
现在,有一种更简单的方法可以连接到容器并干净地退出它们,而无需销毁它们,实现此目的的一种方法是使用 nsenter 命令。
我们运行之前在 nsenter 的命令,你需要首先安装在 nsenter 的镜像。可以通过使用以下命令来完成-
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
在使用 nsenter 命令之前,我们需要获取容器的进程ID,因为这是 nsenter 命令所必需的。我们可以通过Docker inspect命令获取进程ID,并通过 Pid 对其进行过滤。
如上图所示,我们首先使用 docker ps 命令查看正在运行的容器,我们可以看到有一个正在运行的容器,其ID为ef42a4c5e663。
然后,我们使用Docker inspect 命令检查此容器的配置,然后使用 grep 命令仅过滤进程ID。从输出中,我们可以看到进程ID为2978。
现在我们有了进程ID,我们可以继续并使用 nsenter 命令附加到Docker容器。
这种方法允许人们在不退出容器的情况下连接到容器。
nsenter –m –u –n –p –i –t containerID command
-u Uts名称空间
-m 挂载(mount)空间
-n 网络(network)空间
-p 进程(process)空间
-i 容器以交互模式运行。
-t 用于将容器I/O流连接到主机OS。
containerID - 这是容器的ID。
command - 这是在容器内运行的命令。
sudo nsenter –m –u –n –p –i –t 2978 /bin/bash
从输出中,我们可以观察到以下几点-
当我们发出 nsenter 命令时,提示符将直接更改为 bash shell 。
然后我们发出 exit 命令,如果您不使用 nsenter 命令,则该容器将被销毁。但是您会注意到,当我们运行 nsenter 命令时,该容器处于运行状态。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)