如何进入 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 命令来实现这一点。根据你自己的使用场景,可以使用上述任何方法来达到你的目标。

更新于: 2021年8月6日

15K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告