迹忆客 专注技术分享

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

在新的 Docker 容器中启动 Bash 终端

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

Docker 容器是打包应用程序所有依赖项的标准单元,使我们能够在任何环境中轻松运行它们。容器最近变得非常流行,现在大多数开发人员都严重依赖容器来管理他们的应用程序和依赖项。

Docker 通过在 docker 容器中启动 bash 终端,为我们提供了多种访问 shell 实例的方法。这在 docker 容器内运行某些命令时特别有用。

此外,这也可能是出于调试原因,或者你可能想检查所有配置是否正确。本文探讨了我们可用于运行容器和未运行容器的不同方法。

使用 Bash 交互式 Shell

Bash 是 Linux 系统中常见的命令处理器,它允许用户输入导致操作的命令。如果你与基于 Unix 的系统或 WSL 进行了一些交互,你可能会通过 bash 与各种命令进行交互。

同样,我们也可以直接访问 docker 容器中的 Linux 终端并执行命令,就像使用普通 Linux bash 一样。这种方法的一个优点是我们可以使用未运行的容器来执行此操作,这与诸如 docker exec 命令之类的其他命令不同。

如下所示,我们将使用来自 docker 注册表的官方 rabbitmq 映像来创建一个 docker 容器并直接访问容器内的 bash。你可以使用任何其他命令执行此操作;你要确保事先拥有该镜像。

docker pull rabbitmq
docker images

现在我们有了镜像,我们可以交互地创建 docker 容器。这意味着我们可以在运行的同时在 docker 容器内运行命令,如下所示。

$ docker run -it rabbitmq bash

输出:

root@f418a3286aae:/#

如你所见,我们现在位于 docker 容器中,并且我们成功地在新容器中运行了 bash。现在我们可以像使用真正的终端一样执行命令了。

例如,我们可以列出这个容器内的文件和目录,如下所示。

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  usr  var
root@f418a3286aae:/#

使用 docker exec 命令

或者,我们也可以使用 docker exec 命令在新的 docker 容器中运行 bash。但是,与之前的方法不同,此命令要求我们已经让容器运行;否则,该命令将不起作用。

使用 docker ps -a 命令确认我们的容器正在运行。如果你要使用的容器没有运行,你可能需要使用 docker start 命令后跟容器 ID 或名称来启动它。

docker ps

我们将在 -it 标签旁边使用 docker exec 命令。exec 命令允许我们在运行的容器中执行命令,而 -it 标签允许我们以交互方式打开容器。

我们可以执行如下所示。

$ docker exec -it f418a3286aae bash

输出:

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  isaac  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys tmp  tonyloi  usr  var

现在我们已经在这个 docker 容器中成功启动了 bash,我们可以在容器中运行各种命令。我们也可以对没有 bash 的容器使用 sh

这也是一个命令,它将打开一个基本的 shell 提示,我们可以在容器中运行我们的命令。

$ docker exec -it f418a3286aae sh

输出:

# ls
bin  boot  dev  etc  home  isaac  isaactonyloi  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  tonyloi  usr  var

使用 docker attach 命令

我们还可以使用 docker attach 命令在正在运行的 docker 容器中启动 bash。这允许我们使用容器的 ID 将本地标准输入、输出和错误流附加到正在运行的容器。

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

我们可以使用容器名称或 id 来实现这一点,如下所示。

代码:

$ docker container attach f418a3286aae

输出:

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  isaac  isaactonyloi  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  tonyloi  usr  var
root@f418a3286aae:/#

转载请发邮件至 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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便