直接用 docker exec 即可,在运行容器中启动新进程,不影响主进程;需先用 docker ps 确认容器状态为 Up,再执行日志查看、连通性测试、数据导出等操作,并支持指定目录、用户、环境变量及交互式终端。
直接用 docker exec 就行。它专为在运行中的容器里启动新进程而设计,不重启、不终止原有服务,主进程完全不受影响。
确保容器状态正常
执行前先确认容器确实在运行中:
- 运行
docker ps查看 STATUS 是否为 Up - 若显示 Exited 或 Restarting,需先
docker restart 容器名 - 避免对已无响应的容器强行 exec,否则命令容易卡住
常用维护操作示例
所有操作都基于新派生的子进程,与 PID 1 主进程隔离:
- 查日志:
docker exec myapp tail -n 20 /var/log/app.log - 测连通性:
docker exec db ping -c 3 redis - 导出数据:
docker exec db pg_dump -U appuser mydb > backup.sql - 检查环境变量:
docker exec -e DEBUG=1 myapp env | grep DEBUG
精准控制执行上下文
避免路径或权限导致命令失败:
- 指定工作目录:
docker exec -w /app myapp ls -l - 切换用户身份:
docker exec -u www-data myapp whoami - 临时注入变量:
docker exec -e TZ=Asia/Shanghai myapp date
进容器调试要带 -it
需要交互式终端时,必须组合使用 -i 和 -t:
- 标准 Bash:
docker exec -it myapp /bin/bash - Alpine 镜像用 sh:
docker exec -it myapp /bin/sh - 退出后,shell 进程自动结束,不影响容器持续运行











