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