迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 > Docker >

进入 Docker 容器的 Shell

作者:迹忆客 最近更新:2023/03/22 浏览次数:

本文将演示如何使用多种方式进入 Docker 的容器 Shell。

使用 docker exec 进入 Docker 容器的 Shell

我们需要启动并运行一个容器才能使用此命令。我们可以使用以下命令检查系统中容器的状态。

docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS                    PORTS     NAMES
38086474cb6c   debian    "bash"                   2 days ago   Exited (0) 2 days ago               epic_jackson
1c955bac1a84   ubuntu    "bash"                   2 days ago   Exited (0) 2 days ago               musing_morse
1296f9b9d330   nginx     "/docker-entrypoint.…"   2 days ago   Exited (255) 2 days ago   80/tcp    distracted_napier

如果我们没有运行容器,我们可以轻松创建一个。我们将使用 rabbitmq 基础镜像来设置一个容器。

在创建容器之前,我们将首先使用 docker pull 命令从注册表中提取基础映像,如下所示。

$ docker run -d rabbitmq

输出:

Dcad9f270643802092ab525796897c357026767863dade831e8c7d7d82c45712

现在,我们应该有一个正在运行的容器。再一次,我们可以确定使用 docker ps 命令。

$ docker ps -a

输出:

CONTAINER ID   IMAGE      COMMAND                  CREATED              STATUS          PORTS                                                 NAMES
dcad9f270643   rabbitmq   "docker-entrypoint.s…"   About a minute ago   Up 57 seconds   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   inspiring_moore

我们将使用 -it 标签旁边的 docker exec 命令进入容器,与文件交互或执行一些调试。

exec 命令将允许我们在正在运行的容器中执行命令,而 -it 标签将使我们能够交互地打开容器。

最后,sh 命令将打开一个基本的 shell 提示符以在容器中运行我们的命令。

isaactonyloi@DESKTOP-HV44HT6:~$ docker exec -it dcad9f270643 sh
#

现在我们已经进入了 Docker 容器,我们可以在容器中运行各种命令。键入 exit 命令并从该模式按回车键返回主终端。

使用 docker container attach 进入 Docker 容器的 Shell

我们还可以使用 docker container attach 命令连接到正在运行的容器。这允许我们使用容器的 ID 将终端输出、输入和错误流附加到正在运行的容器。

然后我们可以运行各种命令,接受输入,调试指定的容器。如前所述,我们需要一个正在运行的容器来附加我们的输出、输入和错误流。

为此,我们将使用 docker ps,如下所示。我们仍在使用上一节中的 rabbitmq 容器。

$ docker ps -a

输出:

CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                                                 NAMES
dcad9f270643   rabbitmq   "docker-entrypoint.s…"   39 minutes ago   Up 38 minutes   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   inspiring_moore

如果 docker 容器已经停止,那么在这种情况下,我们需要首先使用 docker start 命令启动它,就像我们在这里所做的那样。

$ docker start dcad9f270643
dcad9f270643

现在,如果 docker 容器没有按预期工作,我们可以运行 docker container attach 来查看容器内发生了什么。

$ docker container attach dcad9f270643

输出:

2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> Server startup complete; 3 plugins started.
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_prometheus
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_web_dispatch
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_management_agent

使用安全 Shell (SSH) 进入 Docker 容器的 Shell

最后,我们还可以使用通常缩写为 SSH 的安全 shell 在容器内执行命令。但是,这是最不推荐的方式,因为它会导致基础映像膨胀以及我们可能遇到的配置问题。

此外,这种方法存在安全问题,因为我们需要自己管理密钥。我们还需要考虑到某些镜像可能本质上不支持此方法,因此可能需要进一步配置。

但是,如果我们需要使用这种方法,我们必须遵循这些步骤。

  • 我们首先需要安装并启用 SSH 服务。
  • 然后,我们必须检索容器的 IP 地址。
  • 最后,我们使用检索到的 IP 地址 SSH 进入容器。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Linux 中托管 Docker Internal

发布时间:2023/04/18 浏览次数:139 分类:Docker

Docker 允许开发人员通过将应用程序包装在称为容器的标准化单元中来高效地构建、测试和部署应用程序。 在使用 Docker 容器时,您可能会遇到需要将容器与主机连接的场景。

在 Docker 中设置工作目录

发布时间:2023/04/18 浏览次数:82 分类:Docker

在 Docker 中,我们可以通过编辑 Dockerfile 并添加密钥 WORKDIR 来设置我们的工作目录。本文将讨论在 Docker 中更改我们当前和默认的工作目录。

在 Docker 容器中公开多个端口

发布时间:2023/04/18 浏览次数:143 分类:Docker

Docker 容器使用端口来实现万维网上不同设备之间的通信。 在本篇文章中,我们将学习如何使用 Nginx 应用程序在 Docker 容器中公开多个端口。

将用户添加到 Docker 容器

发布时间:2023/04/18 浏览次数:187 分类:Docker

在本文中,我们将学习如何通过实现返回产品数组的 Express 应用程序将用户添加到 Docker 容器。

使用 Docker 网络主机命令

发布时间:2023/04/18 浏览次数:112 分类:Docker

在本文中,我们将学习如何使用 --network 命令将容器添加到主机网络。 如果我们不使用此命令指定网络,我们还将了解如何将容器添加到默认网络。

清除 Docker 容器日志

发布时间:2023/04/18 浏览次数:181 分类:Docker

本文介绍了我们可以用来清除 docker 容器中日志的不同方法。日志是应用程序在特定事件或状态发生时记录的信息,它们帮助我们监控应用程序并采取必要的措施。

Docker 中的守护进程日志位置

发布时间:2023/04/18 浏览次数:175 分类:Docker

本文将讨论守护进程事件以及我们通常可以在哪里找到每个操作系统 (OS) 的守护进程日志。

Dockerfile 中 COPY 和 ADD 命令的区别

发布时间:2023/04/18 浏览次数:158 分类:Docker

在 Dockerfile 中,我们可以使用 COPY 或 ADD 命令复制这些文件。 这些命令在功能上是相同的; 但是,存在一些差异。本文介绍了 Dockerfile 中 COPY 和 ADD 命令之间的区别。

Docker 中的 --rm 标志

发布时间:2023/04/18 浏览次数:77 分类:Docker

本文介绍如何在 docker 中使用 --rm 命令。 此外,它还提供了使用命令的优势。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便