在 Ubuntu 上使用 Docker 调试程序,常见做法可以按调试对象和调试方式来分。下面给你一套实用指南,从简单到进阶。
适合:程序跑不起来、看日志、看环境。
# 启动并进入容器
docker run -it --name mydebug ubuntu /bin/bash
# 或在已运行容器中执行
docker exec -it 容器名 /bin/bash
常用排查命令:
ps aux
env
cat /var/log/xxx
pip list / npm ls
docker logs 容器名
docker logs -f 容器名 # 实时
如果是自己写的程序,确保:
适合:改代码立刻看效果。
docker run -it \
-v $(pwd):/app \
-w /app \
ubuntu \
bash
或在 docker-compose.yml:
services:
app:
image: ubuntu
volumes:
- .:/app
working_dir: /app
command: bash
✅ 优点:
import logging
logging.basicConfig(level=logging.DEBUG)
docker exec -it 容器名 bash
python -m pdb app.py
launch.json 示例:{
"name": "Python: Remote",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost"
}
Docker 里:
pip install debugpy
python -m debugpy --listen 0.0.0.0:5678 app.py
docker run -it --cap-add=SYS_PTRACE ubuntu bash
apt update && apt install -y gdb
gdb ./a.out
⚠️ 注意:
--cap-add=SYS_PTRACE-gnode --inspect=0.0.0.0:9229 app.js
VS Code:
{
"type": "node",
"request": "attach",
"port": 9229
}
docker ps
docker port 容器名
curl localhost:端口
容器间通信:
docker networkdocker logs + tracingstrace / tcpdumpsupervisor 管理进程如果你愿意,可以告诉我:
我可以直接帮你写可调试的 Docker 配置。