温馨提示×

ubuntu docker怎样调试程序

小樊
38
2026-10-24 22:31:19
栏目: 智能运维

在 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 容器名   # 实时

如果是自己写的程序,确保:

  • 日志输出到 stdout / stderr
  • 不要用后台 daemon 模式隐藏日志

三、挂载代码调试(开发中最常用)

适合:改代码立刻看效果。

docker run -it \
  -v $(pwd):/app \
  -w /app \
  ubuntu \
  bash

或在 docker-compose.yml:

services:
  app:
    image: ubuntu
    volumes:
      - .:/app
    working_dir: /app
    command: bash

✅ 优点:

  • 不用重新 build
  • 本地编辑器改,容器里跑

四、Python 程序调试(非常常见)

1️⃣ print / logging(最稳)

import logging
logging.basicConfig(level=logging.DEBUG)

2️⃣ pdb 调试

docker exec -it 容器名 bash
python -m pdb app.py

3️⃣ VS Code + Docker(推荐)

  • 安装 Docker 和 Python 插件
  • 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

五、C / C++ 程序调试(gdb)

docker run -it --cap-add=SYS_PTRACE ubuntu bash
apt update && apt install -y gdb
gdb ./a.out

⚠️ 注意:

  • 必须加 --cap-add=SYS_PTRACE
  • 编译时加 -g

六、Node.js 调试

node --inspect=0.0.0.0:9229 app.js

VS Code:

{
  "type": "node",
  "request": "attach",
  "port": 9229
}

七、网络 / 端口问题调试

docker ps
docker port 容器名
curl localhost:端口

容器间通信:

  • 同一 docker network
  • 用服务名访问

八、进阶:远程调试 & 生产环境

  • 用 docker logs + tracing
  • 用 strace / tcpdump
  • 用 supervisor 管理进程
  • 不建议在生产容器里开 debug 端口

九、调试思路总结(很重要)

  1. 先确认容器起来了没
  2. 看日志,不猜
  3. 最小化复现
  4. 本地能跑 ≠ 容器能跑
  5. 环境差异是最大坑

如果你愿意,可以告诉我:

  • 用的什么语言(Python / Java / C++ / Node)
  • 是本地开发还是服务器
  • 报错信息或 Dockerfile

我可以直接帮你写可调试的 Docker 配置。

0 踩