如何在 Docker 容器内运行 Linux 命令如何在 Docker 容器内运行 Linux 命令如何在 Docker 容器内运行 Linux 命令如何在 Docker 容器内运行 Linux 命令
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Docker 容器内运行 Linux 命令

发表 admin at 2025年2月28日
类别
  • 未分类
标签

以下是在 Docker 容器内运行 Linux 命令的多种方法,无论是否输入命令。此外,了解如何从 Linux 中的任何目录执行此操作。

有两种方法可以在 Docker 容器内运行 Linux 命令:使用 Docker exec 命令从容器外部运行它,或者首先进入正在运行的容器,然后像在常规 Linux 终端中一样运行该命令。

要立即在 Docker 容器上运行 Linux 命令,无需输入,您可以使用 docker exec 命令,如下所示:

docker exec container_name_or_ID bash -c "<linux command>"

根据容器内可用的 shell 类型,命令可能会根据具体情况而有所不同。它也可以是 sh 而不是 bash。

同样,您可以进入容器的 shell 并在其中运行 Linux 命令。

docker exec container_name_or_ID bash

不仅是 Docker,Docker Compose 也可以非常方便,特别是当您运行根据 yml 文件指定的 Web 应用服务(这是生产系统上的首选方式)时,这些服务位于各自的目录中。

让我详细讨论一下。

方法 1:使用 Docker Compose 直接执行容器 shell 命令

对于初学者来说,最常见的方法是首先 cd 进入服务目录,然后运行 exec 命令。

举例来说,首先您“cd”进入服务目录:

avimanyu@iborg-desktop:~$ cd web-app-service
avimanyu@iborg-desktop:~/web-app-service$

在此阶段,您可以使用 docker-compose 运行相同的 exec 命令(如介绍性示例中所示)。就是这样:

avimanyu@iborg-desktop:~$ docker-compose exec web-app bash -c "<linux command>"

在这种情况下,这样做的优点是您不需要检查与您正在运行的 Web 应用服务相关的相应容器名称(使用 docker ps )。您可以直接使用配置时在服务目录内的 docker-compose.yml 文件中指定的服务名称 web-app。

但是,如果您不想在维护/故障排除期间每次都 cd 进入这些 Web 应用程序服务目录怎么办?让我们看看如何:

例如,以下命令从目标 webapp 服务的任何 PWD 位置运行“docker-compose exec”,否则必须通过 cd 进入服务的 docker compose 目录来执行:

avimanyu@iborg-desktop:~$ docker-compose -f ~/web-app-service/docker-compose.yml exec web-app bash -c "<linux command>"

通过一行,您可以指定 YML 文件的位置以及执行特定服务的命令。这不是很有趣吗?因此,不仅 exec,您还可以通过这种方式为任何 Web 应用程序运行您喜欢的任何各种 Docker Compose 子命令!这对于比平时更快地升级故障排除非常有帮助。

方法 2. 使用 Docker Compose 间接执行容器 Shell 命令

通过间接 shell 命令,我的意思是先进入容器 shell,然后再在其中输入命令。这也可以使用 Docker Compose 来完成。再次,我们首先“cd”进入服务目录:

avimanyu@iborg-desktop:~$ cd service
avimanyu@iborg-desktop:~/service$

进入此 PWD 后,您可以进入服务的容器 shell:

avimanyu@iborg-desktop:~/service$ docker-compose exec web-app bash
root@019b69d74173:/app#

现在您可以在容器内运行您想要的命令。但是让我们再看看如何从任何位置直接执行此操作(PWD):

avimanyu@iborg-desktop:~$ docker-compose -f ~/web-app-service/docker-compose.yml exec web-app bash

当直接命令不够并且您想要评估或解决正在运行的容器内的某些问题时,这特别有用。

概括

有多种方法可以在容器 shell 内运行命令。老实说,其中哪一个最有效取决于用例场景及其在现实情况中的重要性。

如果您有兴趣了解有关 Docker 命令的更多信息,那么本文适合您。

我希望您发现这些快速提示对 Linux 和 Docker 很有用。我们随时欢迎您提出意见和反馈。

©2015-2025 Norria support@alaica.com