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

如何在docker的容器中使用gdb

作者头像
Homqyy
发布于 2023-03-06 05:25:20
发布于 2023-03-06 05:25:20
1.9K00
代码可运行
举报
文章被收录于专栏:知行合一知行合一
运行总次数:0
代码可运行

解决方案

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为什么 strace 在 Docker 中不起作用?
在编辑“容器如何工作”爱好者杂志的能力页面时,我想试着解释一下为什么 strace 在 Docker 容器中无法工作。
用户8639654
2021/09/18
8.1K0
Kubernetes对Container Capabilities的支持
Docker Container Capabilities 在docker run命令中,我们可以通过--cap-add和--cap-drop来给容器添加linux Capabilities。下面表格中的列出的Capabilities是docker默认给容器添加的,用户可以通过--cap-drop去除其中一个或者多个。 Docker’s capabilitiesLinux capabilitiesCapability Description SETPCAPCAP_SETPCAPModify pro
Walton
2018/04/16
4.2K0
制作 PG15 docker 学习镜像
如果为了模拟多实例PG环境,有不想开多个虚拟机,也不想在单机多端口运行的话,docker是一个不错的选择。
保持热爱奔赴山海
2024/01/10
2810
使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.
随着容器和云技术的发展, 大量的应用运行在云上的容器中, 它们的好处是毋庸置疑的, 例如极大的提高了我们的研发部署速度, 快速的扩缩容等等, 但是也存在一些小小的问题, 例如难以调试. 基于VM的部署我们可以通过安全的方式登录到主机上做一些你想做的事情, 但是云上的容器那就是不太方便了(目前AWS的ECS已经有类似docker exec的方式直接进入容器中了, 其他的云未作了解). 但是就算能进入容器也不意味着调试就好做了, 通常来说使用的镜像都是经过优化和精简的(如果要调式可能需要安装大量的组件).
旺财的城堡
2022/11/02
1.3K0
使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.
如何在 OpenShift 中运行 Collabora Office
近期在尝试 office 文档在线编辑和预览的一些解决方案, 目前在使用Collabora Office, 但是Collabora的docker镜像在OpenShift中运行不起来, 一直提示Operation not permitted.
东风微鸣
2022/04/21
1.3K0
如何在 OpenShift 中运行 Collabora Office
Linux Capabilities 与容器的水乳交融
更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io 前言 该系列文章总共分为三篇: ?Linux Capabilities 入门教程:概念篇 ?Linux Capabili
米开朗基杨
2020/10/30
2.1K0
Linux Capabilities 与容器的水乳交融
在Kubernetes中配置Container Capabilities
实际上这是配置对应的容器的 Capabilities,在我们使用 docker run 的时候可以通过 --cap-add 和 --cap-drop 命令来给容器添加 LinuxCapabilities。对于大部分同学可能又要疑问 LinuxCapabilities 是什么呢?
CNCF
2019/12/04
4.3K0
基于 Cilium 和 eBPF 检测容器逃逸
如果运行云原生工作负载均衡设施,则可以更好地保护我们的服务。毕竟,服务经常向公众暴露以及工作负载可能属于不同的租户。在这篇博文中,我将向大家展示访问我们的 Kubernetes 集群的攻击者如何进行容器逃逸:运行 Pod 以获得 root 权限,将 Pod 转义到主机上,并通过不可见的 Pod 和无文件执行来持续攻击。同时,我将向大家展示如何基于 Isovalent Cilium Enterprise 进行攻击检测。
Luga Lee
2021/11/19
8350
基于 Cilium 和 eBPF 检测容器逃逸
学习linux笔记(不断更新)
平时用的Mac,不想再去安装一遍双系统了,因此直接用docker安装了centos。主要步骤为到docker官网下载Stable并安装后,配置一下镜像源(http://hub-mirror.c.163.com)。更为详细的内容可参见MacOS Docker 安装。
xiaoxi666
2019/05/06
1.2K0
GDB原理之ptrace实现原理
在程序出现bug的时候,最好的解决办法就是通过 GDB 调试程序,然后找到程序出现问题的地方。比如程序出现 段错误(内存地址不合法)时,就可以通过 GDB 找到程序哪里访问了不合法的内存地址而导致的。
用户7686797
2020/11/05
4.7K0
GDB原理之ptrace实现原理
Docker逃逸原理
Docker是当今使用范围最广的开源容器技术之一,具有高效易用的优点。然而如果使用Docker时采取不当安全策略,则可能导致系统面临安全威胁。
枪哥四海为家
2022/03/07
3.3K1
Docker逃逸原理
记一次ASP.NET CORE线上内存溢出问题与dotnet-dump的排查方法
项目又都运行在docker容器中,容器为了最小化,采用了极简的系统,几乎任何常见命令都没有.
GuZhenYin
2025/05/17
1870
记一次ASP.NET CORE线上内存溢出问题与dotnet-dump的排查方法
Container (Docker) is Process or Virtual Machine
Docker 是虚拟机吗?Docker 底层用了哪些关键技术?容器逃逸逃的是什么?
wywwzjj
2023/05/09
1K0
Container (Docker) is Process or Virtual Machine
强!70.3K star ! 推荐一款功能强大、开源、可视化的性能实时监控系统:Netdata!
在当今复杂多变的IT环境中,系统性能的实时监控与分析对于确保业务连续性、系统稳定运行以及快速故障排查至关重要。随着云计算、大数据和微服务架构的普及,对监控系统的要求也日益增高。
测试开发技术
2024/09/11
4630
强!70.3K star ! 推荐一款功能强大、开源、可视化的性能实时监控系统:Netdata!
云原生时代,必备的Docker容器管理命令大揭秘!
在一个终端执行docker create,在另一个终端执行docker events。
Lion 莱恩呀
2025/05/07
630
云原生时代,必备的Docker容器管理命令大揭秘!
Go语言开发调试高阶
最近在二次开发一个分布式系统,几个组件互相依赖。由于本地环境(windows系统)限制,无法像Linux环境那样,快速搭建目标程序所依赖的分布式环境。 而在远端SIT环境已经部署好了整套分布式系统,因此想到,是否可以用本地IDE上远程调试部署在远端的目标程序?
nevermosby
2020/05/11
2K0
Linux Capabilities 入门:如何管理文件的 capabilities?
上篇文章介绍了 Linux capabilities 的诞生背景和基本原理,本文将会通过具体的示例来展示如何查看和设置文件的 capabilities。
米开朗基杨
2019/11/14
4.5K0
容器安全机制解读
Docker默认设置可以保护主机容器内的进程访问资源,虽然Docker容器内的初始进程运行为root,但它具有的权限是非常有限的,这主要是通过使用以下几种主要的安全机制来实现的:
Al1ex
2023/12/22
5860
我的ROS2开发环境
想要验证一个功能包,但却需要安装各种依赖。装就装吧!但是安装的依赖可能更新本机中的一些配置或软件版本,导致过去可以运行的软件这么折腾一下后就不能再运行了。
首飞
2022/06/05
1.4K0
我的ROS2开发环境
【Docker】专题四:Docker Compose 相关
Docker Compose 是 Docker 官方的编排项目之一,用于定义和运行多个容器,可以简化多容器应用程序的部署和管理,与 Docker Machine、Docker Swarm 并称 Docker “三驾马车”。
行者Sun
2024/09/02
1050
【Docker】专题四:Docker Compose 相关
相关推荐
为什么 strace 在 Docker 中不起作用?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档