Docker 是容器化事实上的标准,提供了一种打包和分发应用程序的有效方法。作为开发人员或系统管理员,有时您可能需要获得对正在运行的 Docker 容器的 shell 访问权限。这可以用于调试目的、应用程序管理或其他各种任务。
本指南提供了有关如何获得对正在运行的 Docker 容器的 shell 访问权限的分步过程。
先决条件
在我们深入研究该过程之前,请确保您的计算机上已安装并运行 Docker。本指南假设您对镜像、容器和 Dockerfile 等 Docker 概念有基本的了解。
第 1 步:列出正在运行的 Docker 容器
首先,您需要确定要获得 shell 访问权限的 Docker 容器。 Docker 提供了一个命令来列出当前正在运行的所有容器:
docker ps
此命令将显示一个表,其中包含容器 ID、映像名称、命令、创建时间、状态、端口和正在运行的容器的名称。
|
容器ID 图像COMMAND已创建地位端口NAMES
72ca2488b353 my_image “/entrypoint.sh /sta…” 7 hours ago Up 3 hours 0.0.0.0:8080->80/tcp 我的容器
e7904c4c6ecamysql:5.7 “docker-entrypoint.s…” 7 hours ago Up 7 hours 0.0.0.0:3306->3306/tcp my_db
|
第 2 步:获取对 Docker 容器的 Shell 访问权限
一旦确定了要访问的 Docker 容器,就可以使用以下 Docker 命令来获取 shell 访问权限:
|
docker exec -it <容器-id> /bin/bash
|
在此命令中:
-
exec用于在正在运行的 Docker 容器中运行命令。
-
-it选项允许您与容器交互。 “i”代表“interactive”,“t”代表“tty”,它在容器内分配一个伪 TTY 或终端。
-
是您要访问的 Docker 容器的 ID。将其替换为您的实际容器 ID。
-
/bin/bash在容器内启动 Bash shell。如果 Bash 不可用,您可以使用 /bin/sh 代替。
这是一个例子:
docker exec -it e7904c4c6eca /bin/bash
执行命令后,您的提示符应更改为类似以下内容根@e7904c4c6eca:/#,表明您现在位于容器内。
第 3 步:与 Docker 容器交互
一旦获得 shell 访问权限,您就可以在容器内运行任何命令。例如,要列出当前目录中的所有文件,可以运行 ls 命令:
ls -l
第四步:退出Docker容器
要退出 shell 而不停止 Docker 容器,请使用 exit 命令:
exit
此命令将结束 shell 会话并返回到主机 shell。
结论
获得对正在运行的 Docker 容器的 shell 访问权限是一个简单的过程。它允许您与应用程序交互并执行必要的调试或管理任务。重要的是要记住,一旦容器被删除,您在容器内所做的任何更改都将丢失,除非这些更改位于卷中。
对于使用容器化应用程序的任何人来说,了解如何直接与 Docker 容器交互是一项宝贵的技能。通过本指南,您现在应该能够轻松地获得对任何正在运行的 Docker 容器的 shell 访问权限。