进入容器与调试

在开发和运维中,进入运行中的 Docker 容器进行调试是常见需求。本节介绍进入容器的方法和调试技巧。

1. 使用 docker exec 进入容器

docker exec 可在容器中执行命令或启动交互式终端:

# 进入容器交互式终端
docker exec -it mycontainer /bin/bash

# 运行单条命令
docker exec mycontainer ls /app

`

  • -i:保持标准输入打开
  • -t:分配伪终端

2. 使用 docker attach 连接容器

docker attach 将终端附加到容器的主进程:

docker attach mycontainer
  • 注意:Ctrl+C 会发送信号给容器主进程,可能导致容器退出
  • docker exec 更安全,可避免干扰主进程

3. 查看容器日志

docker logs mycontainer
docker logs -f mycontainer   # 实时查看日志
  • 查看输出日志有助于定位问题
  • 结合日志文件和日志管理工具(如 ELK)使用效果更佳

4. 安装调试工具

对于基础镜像较小的容器(如 Alpine),可能需要安装调试工具:

docker exec -it mycontainer sh
apk add --no-cache bash curl vim
  • 常用工具:bashcurlvimnet-tools

5. 网络与端口调试

  • 查看网络配置:
docker exec mycontainer ip addr
docker exec mycontainer netstat -tuln
  • 端口映射检查:
docker port mycontainer

6. 调试最佳实践

  • 使用 docker exec 进入容器,避免 attach 主进程
  • 避免在生产容器中修改关键文件,可使用临时容器调试
  • 结合日志、监控和网络工具进行综合调试
  • 调试完成后及时退出,保证容器安全与稳定

掌握进入容器和调试技巧,可以快速排查问题,提高开发效率和生产环境可靠性。