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