插件窝 干货文章 如何使用 docker exec 在 Docker 容器中运行命令

如何使用 docker exec 在 Docker 容器中运行命令

docker 容器 命令 运行 990    来源:    2025-04-02

使用 docker exec 在 Docker 容器中运行命令

docker exec 命令允许你在正在运行的 Docker 容器内部执行命令,而不需要进入交互式 shell。这是在容器中执行一次性命令或调试问题的有用工具。

基本语法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

常用选项

  • -i--interactive: 保持 STDIN 打开,即使没有附加
  • -t--tty: 分配一个伪终端
  • -d--detach: 在后台运行命令
  • -e--env: 设置环境变量
  • -u--user: 指定用户名或 UID
  • -w--workdir: 指定工作目录

常见用法示例

1. 在容器中执行简单命令

docker exec my-container ls /app

2. 以交互模式运行命令(带伪终端)

docker exec -it my-container /bin/bash

这将打开一个交互式 bash shell 在容器中。

3. 在特定目录中执行命令

docker exec -w /app my-container ls

4. 以特定用户身份执行命令

docker exec -u root my-container whoami

5. 在后台运行命令

docker exec -d my-container touch /tmp/testfile

6. 设置环境变量

docker exec -e VAR1=value1 -e VAR2=value2 my-container env

注意事项

  1. 容器必须处于运行状态才能使用 docker exec
  2. 如果容器中没有安装所需的 shell(如 /bin/bash),你可能需要使用其他可用的 shell
  3. 某些容器可能限制了对某些命令的访问
  4. 使用 -it 选项时,可以使用 exit 或 Ctrl+D 退出交互式会话

docker run 的区别

  • docker run 创建一个新容器并运行命令
  • docker exec 在已运行的容器中执行命令

实际应用场景

  1. 调试容器:检查日志、配置文件或运行状态
  2. 执行维护任务:如数据库备份
  3. 临时修改:在不重建镜像的情况下测试更改
  4. 运行一次性脚本:在容器环境中执行特定脚本

示例:调试 web 服务器容器

# 检查运行的进程
docker exec my-webserver ps aux

# 检查网络连接
docker exec my-webserver netstat -tuln

# 检查日志文件
docker exec my-webserver tail -f /var/log/nginx/error.log

通过 docker exec,你可以灵活地与运行中的容器交互,而无需中断其正常运行。