docker exec
在运行中的容器内执行命令
语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-it |
交互式终端模式 | docker exec -it web bash |
常用 |
-d --detach |
后台执行 | docker exec -d web touch /tmp/test |
常用 |
-e --env |
设置环境变量 | docker exec -e DEBUG=1 web node script.js |
进阶 |
-u --user |
指定执行用户 | docker exec -u root web apt update |
进阶 |
-w --workdir |
指定工作目录 | docker exec -w /app web ls |
进阶 |
示例
进入容器 Shell
docker exec -it my-container bash
如果没有 bash 可以试 sh
查看容器内文件
docker exec web cat /etc/nginx/nginx.conf
不进入交互模式直接执行命令
以 root 身份执行
docker exec -u root web apt-get update
容器默认用户权限不够时使用
在容器中运行脚本
docker exec -w /app web python manage.py migrate
指定工作目录执行
常见错误
Error: No such container
容器不存在或名称错误,用 docker ps 确认容器名
OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found
容器中没有 bash,改用 sh:docker exec -it container sh
Error response from daemon: Container is not running
容器已停止,需要先 docker start 启动
技巧
- alpine 镜像没有 bash,用 sh 代替
- 调试时用 docker exec -it container sh 进入容器排查问题
- 用 -u root 可以临时获取 root 权限安装调试工具