前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在docker的容器中使用gdb

如何在docker的容器中使用gdb

作者头像
Homqyy
发布2023-03-06 13:25:20
1.4K0
发布2023-03-06 13:25:20
举报
文章被收录于专栏:知行合一知行合一

解决方案

话不多说,先上答案:在运行容器的时候,使用参数--cap-add sys_ptrace,比如:

代码语言:javascript
复制
docker run --cap-add sys_ptrace homqyy/example_http

问题原因

由于docker运行的容器默认是将“追踪”能力给关掉的,因此我们需要手动的打开。关于“追踪”能力的原文如下所示:

capabilities(7) — Linux manual page CAP_SYS_PTRACE * Trace arbitrary processes using ptrace(2); * apply get_robust_list(2) to arbitrary processes; * transfer data to or from the memory of arbitrary processes using process_vm_readv(2) and process_vm_writev(2); * inspect processes using kcmp(2).

触类旁通法

docker除了提供系力度的能力控制(--cap-add--cap-del)外,还提供了一个能力全开放的选项“--privileged”,因此我们可以如此排查:

  • 如果后续我们有遇到在本地开发环境正常,但在docker中却无法使用的工具或运行的程序,比如tcpdump时,不妨直接打开它,以排查是否与能力相关。
  • 如果打开全能力后就能正常使用或运行,则再根据“capabilities(7) — Linux manual page”去找对应的能力选项
  • 最后通过--cap-add来开启必须的能力即可(不推荐大家直接使用--privileged的原因是,不安全)。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年4月28日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决方案
  • 问题原因
  • 触类旁通法
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档