如何进入 Docker 容器的 Shell?
一旦你的 Docker 容器启动并运行,你可以像操作 Ubuntu 机器一样操作 Docker 容器的环境。你可以访问容器的 bash 或 shell,在其中执行命令并操作文件系统。你可以在容器本身内部构建、测试和部署你的应用程序。
主要有三种方法可以访问正在运行的容器的 shell:-
- 使用 Docker run 命令运行容器并访问其 shell。
- 使用 Docker exec 命令在活动容器中运行命令。
- 使用 Docker start 命令并将 shell 附加到已停止的容器。
在本文中,我们将逐一讨论所有这些方法并提供实际示例。让我们看看如何做到这一点。
Docker Run 命令
如果你没有运行的容器,可以使用 Docker run 命令创建并运行一个与镜像关联的容器,并访问容器的 bash。让我们尝试运行一个 ubuntu 容器并访问其 bash。
$ docker run -it --name=myubuntu ubuntu:latest bash
在上面的命令中,我们使用了 -i(交互式)和 -t(伪终端)选项,这将允许我们使用终端驱动程序与容器进行交互。bash 命令在容器启动后立即运行。因此,执行此命令后,守护进程将自动创建容器、运行它并为我们提供对其 shell 的访问权限。
请注意,如果你的系统上没有 Ubuntu 镜像,守护进程将自动拉取镜像并创建和运行容器。
一旦你能够访问容器的 bash,你就可以开始与 Ubuntu 环境进行交互并操作其文件系统。
Docker Exec 命令
Docker exec 命令用于在已运行的容器内运行命令。只有在容器的主进程正在运行时才能使用此命令。在容器内执行的任何命令都将在默认工作目录中运行,除非你使用 -w 选项指定所需目录。此外,你将无法运行任何带引号或链接的命令。只能运行可执行的命令。
Docker exec 命令的语法为:-
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
可以使用此命令启动一个已在其他地方运行的容器的新 bash 会话。
$ docker exec -it myubuntu bash
此命令使用交互式和伪终端选项启动已在运行的 ubuntu 容器的 bash。
Docker Start 命令
如果你有一个处于退出状态的容器,并且想要启动与该容器关联的 bash,则可以使用 Docker start 命令以及 --attach 和 --interactive 选项。这将附加一个新的终端,并允许你轻松地与容器进行交互。让我们看看如何做到这一点。
Docker start 命令的原始语法为:-
$ docker start [OPTIONS] CONTAINER [CONTAINER...]
如果要检查容器的状态,可以尝试列出所有容器。
$ docker container ps -a
可以使用以下命令创建已停止容器的 bash 会话:-
$ docker start -ai myubuntu
总而言之,在本文中,我们讨论了如何进入正在运行、已停止或通过创建新容器进入 Docker 容器的 shell。我们使用了 Docker run、exec 和 start 命令来实现这一点。根据你自己的使用场景,可以使用上述任何方法来达到你的目标。