迹忆客 专注技术分享

当前位置:主页 > 学无止境 >

如何在正在运行的 Docker 容器上运行命令

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

通常,我们希望完全包含 Docker 应用程序,但有时出于开发或自动化目的,能够像使用 Linux VM 一样使用 Docker 容器。 Docker 提供了用于在容器内运行命令甚至整个 shell 的工具。

在容器中运行命令

要在容器中运行命令,将需要其容器 ID,除非我们为该容器设置了特定名称。 这是一个长的十六进制字符串,我们可以从 Docker 进程列表中找到:

$ docker ps

然后,我们可以使用 exec -it 命令在容器内运行。 例如,查看日志文件的输出:

$ docker exec -it containerID tail /var/log/nginx/access.log

我们还可以在容器内运行脚本:

$ docker exec -it containerID script.sh

-it 选项分别用于“交互模式”和 TTY,几乎一直使用。 我们可以使用其他一些选项:

  • --workdir-w 在命令之前更改当前目录。
  • --detach-d 在后台运行命令。
  • --env-e 在运行前设置环境变量。
  • --env-file 做同样的事情,但处理起来更安全。
  • --privileged 以扩展权限运行命令。
  • --user 作为不同的用户运行

当然,这只适用于正在运行的容器。 如果想暂停容器进行维护,则需要通过新的镜像版本部署更新,或者从主机操作系统更改卷挂载的数据。

通过 SSH 连接到容器

不仅限于简单的命令,我们实际上可以通过运行 /bin/bash 作为命令来打开 shell。 可能会受到可用工具的限制——大多数容器都具有相当准系统的 Linux 安装——但它使运行许多命令变得更加容易。

$ docker exec -it containerID /bin/bash

这只是一个可从主机访问的 shell,在大多数情况下运行良好。 但是,如果愿意,我们可以将容器设置为通过 SSH 像 VPS 一样完全可用。 可以在 Docker 容器中运行 SSH 服务 的文章中阅读有关设置的更多信息。

将文件复制到容器和从容器拷贝出来

使用 exec -it 运行命令可以工作,但主机和容器之间仍有一层阻止简单的脚本编写。 一方面,虽然向容器发送命令很容易,但从文件系统中获取输出却更难。

虽然可以通过管道将 exec -it 的 STDOUT 传输到主机操作系统上的其他服务,但也可以将文件复制到容器的文件系统或从容器的文件系统拷贝文件。 例如,拉出一个日志文件并将其粘贴到主机上:

$ docker cp container:/var/log/nginx/example.log example.log

或拉出整个目录

$ docker cp nginx:/etc/nginx/ nginxconfig/

但是,如果经常这样做,则可能需要考虑使用绑定或卷挂载来使数据可以直接从主机访问。

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

本文地址:

相关文章

在 Linux 中托管 Docker Internal

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

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

在 Docker 中设置工作目录

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

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

在 Docker 容器中公开多个端口

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

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

将用户添加到 Docker 容器

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

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

使用 Docker 网络主机命令

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

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

清除 Docker 容器日志

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

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

Docker 中的守护进程日志位置

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

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

Dockerfile 中 COPY 和 ADD 命令的区别

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

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

Docker 中的 --rm 标志

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

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

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便