Docker 容器抓包

背景介绍

程序在运行期间出现问题时,通常会通过抓包的方式来分析、定位问题。非容器应用一般可以通过 fiddler、wireshark 等工具进行抓包,那么,运行在容器的应用一般通过什么方式进行抓包呢?

容器应用一般可以通过 tcpdump、ngrep 等兼容 Linux 的命令行工具进行抓包,如果只对 http 进行抓包,可以简单使用 ngrep。以下将介绍如何使用 ngrep 对容器进行抓包。

案例演示

我们使用 nginx 的镜像启动两个容器 http-server,http-client 分别代表服务端和客户端,同时对服务端和客户端进行抓包进行分析。

  • 启动 http-server

docker run --name http-server -d nginx:alpine

380a7c7d87ff29c79631a7b5479ff338.png

  • 启动 http-client

docker run --name http-client --link http-server:http-server -d nginx:alpine

eb8596b9987faca6c6119ab423d1cc39.png

  • 安装 ngrep

docker exec -it http-server sh# 修改源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositoriesapk update
apk add ngrepdocker exec -it http-client sh# 修改源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositoriesapk update
apk add ngrep

34e215b014628a25758a42d03c72c885.png

由于本文示例使用的是 alpine 的操作系统,所以上述指令只针对 alpine,其它操作系统请参考:

# ubuntu or debian
# sed -i 's|https\?://[^/]\+/|http://mirrors.aliyun.com/|' /etc/apt/sources.list
apt-get update -y
apt-get install ngrep -y# centos 7
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum update -y
yum install ngrep -y
  • 启动 ngrep

启动 ngrep 并监听 80 端口:

ngrep port 80

5236a08ffff5f1d2c18dfb25df3d9b28.png

  • GET 请求抓包分析

curl http://http-server/?name=ErikXu

f35d96771edc29bc4b969f7758c10293.png

dcdb4a54a887d28c1aad72f4d91875f8.png

从上图可以看出客户端和服务端的抓包内容是相同的,都是 3 个包:

第一个是从客户端(172.17.0.3:44076)发送给服务端(172.17.0.2:80)的包,请求方式为 GET,请求地址是 /?name=ErikXu。

第二个是服务端回给客户端的包,返回状态码 200。

第三个也是服务端回给客户端的包,返回 html 的内容。

  • POST 请求抓包分析

curl -X POST "http://http-server" -H  "accept: */*" -H  "Content-Type: application/json" -d "{\"name\":\"string\",\"body\":\"string\"}"

e8a445a50224e2671fe52f5a71406513.png

f35acf8d44f05f639e6e97743e1714c0.png

从上图可以看出客户端和服务端的抓包内容是相同的,都是 2 个包:

第一个是从客户端(172.17.0.3:44076)发送给服务端(172.17.0.2:80)的包,请求方式为 POST,请求地址是 /,请求体内容是 {"name":"string","body":"string"}。

第二个是服务端回给客户端的包,返回状态码 405 及相关提示信息。

参考总结

以上就是本文希望分享的内容,如果大家有什么问题,欢迎在公众号 - 跬步之巅留言交流。

原创不易,觉得不错还请一键三连,您的支持是我持续输出的最大动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务发现与健康监测框架Consul-DNS转发的应用

关于Consul Consul是一个提供服务注册与发现,健康监测,Key/Value存储以及多数据中心存储的分布式框架。官网地址是https://www.consul.io/,公司初步应用后我们老大觉得这东西有点意思,随即有了翻译文档的想法,由于精力…

【ArcGIS风暴】ArcGIS10.6图斑椭球面积计算原理与方法

文章目录 1. 椭球面积计算原理2. ArcGIS计算图斑椭球面积3. ArcGIS计算图斑投影平面面积1. 椭球面积计算原理 <

实践 Neutron 前的两个准备工作 - 每天5分钟玩转 OpenStack(78)

上一节配置了 linux-bridge mechanism driver&#xff0c;本节再做两个准备工作&#xff1a; 1. 检视初始的网络状态。2. 了解 linux bridge 环境中的各种网络设备。 初始网络状态 我们首先考察实验环境最初始的网络状态。随着学习的深入&#xff0c;我们会对网络不断进行新的配…

《iVX 高仿美团APP制作移动端完整项目》04 美食页 标题、搜索、商家标题制作

点击整个专栏查看其它系列文章 &#xff08;系列文章更新中…&#xff09;&#xff1a;《iVX 高仿美团APP制作移动端完整项目》 项目界面预览&#xff1a; 一、美食页顶部商家页制作 1.1 页面主格调确认 该美食页为首页中美食按钮点击后进入的页面。该页面分为顶部的标题、搜…

利用浏览器调试功能 计算 百度网盘 文件数量

“百度网盘”程序做的比较烂&#xff0c;以百度的技术实力按说不应该如此。真正试了就知道真的不怎么样。为了统计百度网盘的文件写了以下脚本&#xff0c;仅供参考&#xff1a; var root "";//指定目录&#xff0c;空取当前目录 var totalCount 0; var startTime …

就在刚刚,HTTP/3 正式发布了!

经过了多年的努力&#xff0c;在 6 月 6 号&#xff0c;IETF &#xff08;互联网工程任务小组&#xff09; 正式发布了 HTTP/3 的 RFC&#xff0c; 这是超文本传输协议&#xff08;HTTP&#xff09;的第三个主要版本&#xff0c;完整的 RFC 超过了 20000 字&#xff0c;非常详细…

通渭县义岗川镇之行(2020年11月19日)

2020年11月18日&#xff0c;应邀前往通渭县义岗川镇老家&#xff0c;经过了3个小时的自驾车程&#xff0c;夜幕降临时刻到达了美丽的义岗川小镇。 义岗川镇&#xff0c;隶属甘肃省定西市通渭县&#xff0c;地处通渭县城最北部&#xff0c;东南与寺子川乡毗连&#xff0c;南邻北…

《iVX 高仿美团APP制作移动端完整项目》05 美食页商家推荐内容、分类、推荐商家制作

这一节我们将讲解美食页下半部分内容制作&#xff1a; 一、完善店铺推荐 接下来继续制作以下内容&#xff1a; 1.1 满减信息 现在咱们在对应的商家行中添加一个行&#xff0c;命名为满减&#xff0c;并且对应的更改高度为包裹&#xff1a; 随后更改其背景色、字体颜色使…

利用浏览器调试功能 计算 百度网盘 文件数量 V2

最近需要统计百度网盘里文件的数量&#xff0c;百度网盘又没有提供这样的功能&#xff0c;因此之前自己写了段脚本进行查验&#xff0c;见《利用浏览器调试功能 计算 百度网盘》。之后发现每个目录最多文件数只有1000&#xff0c;因此研究了哈百度的接口&#xff0c;重新对脚本…

Single Number II(LintCode)

Single Number II Given 3*n 1 numbers, every numbers occurs triple times except one, find it. Example Given [1,1,2,3,3,3,2,2,4,1] return 4 Challenge One-pass, constant extra space. 统计每一位上的1出现的次数&#xff0c;然后模3 &#xff0c; 题目上的3 * n 1给…

《iVX 高仿美团APP制作移动端完整项目》06 美食页商家推荐内容、分类、推荐商家制作

接下来开始制作超市便利页面&#xff1a; 一、标题 首先&#xff0c;我们创建一个页面&#xff0c;该页面设置背景颜色为黄色&#xff1a; 随后欧创建一个行&#xff0c;命名为主要&#xff0c;之后将会在这个主要行之中添加对应的模块内容&#xff1a; 该主要行&#xff…

C# 11 新特性:列表模式匹配

之前使用模式匹配&#xff0c;可以测试表达式结果是否等于指定的常量或者在某个范围内&#xff1a;public static string Demo(int number) {return number switch{100 > "A",>90 >"B",_ > "C"}; }上面的代码&#xff0c;执行逻辑如…

G2 2.0 更灵活、更强大、更完备的可视化引擎!

概述 G2作为一款技术产品&#xff0c;自诞生以来&#xff0c;服务于广大的Web工程师群体和一部分数据分析师。一直来&#xff0c;G2 因其易用的语法和扎实的可视化理论基础&#xff0c;广受使用者好评。G2 1.x 的可视化能力已经非常强大&#xff0c;使用者已经能够在掌握图形语…

《iVX 高仿美团APP制作移动端完整项目》07 会员页制作

会员页如下&#xff1a; 一、会员页标题制作 会员页的标题是顶部的提示字样&#xff0c;该字样咱们可以分析&#xff0c;可以使用两个文本组件&#xff0c;每个占据一行&#xff1a; 首先咱们创建一个页面命名为会员中心&#xff1a; 接着在会员中心下创建一个行&#xff…

【ArcGIS风暴】ArcGIS添加超链接的两种方法详解

文章目录 1. 在识别对话框中添加超链接2. 利用属性字段添加超链接在ArcGIS中,可以很方便的设置文档超链接和URL超链接,设置完成后,只需要点击某个图斑就可以跳到指定的地址。本文详细讲解ArcGIS中超链接的设置方法。 1. 在识别对话框中添加超链接 启动软件,加载甘肃省行政…

Android Studio目录结构分析

Android studio 目录结构1. .gradleGradle编译系统&#xff0c;版本由wrapper指定2. .ideaAndroid Studio IDE所需要的文件3. app3.1 app/buildapp模块编译输出的文件3.2 app/libs放置引用的类库文件3.3 app/src放置应用的主要文件目录3.4 app/.gitgnoregit使用的ignore文件3.5…

《iVX 高仿美团APP制作移动端完整项目》08 会员页 标题、会员卡 制作

一、分类制作 我们接着往下制作该页的下半部分内容&#xff1a; 由于对应最下部分的商家推荐重复&#xff0c;直接复制即可&#xff0c;在此不做过多的讲解&#xff1a; 接下来我们创建一行命名为内容&#xff0c;用以作为下半部分的容器&#xff1a; 接着我们制作第一个种…

微软AI插件Github Copilot初体验

前言上个月看到了一款插件 微软 GitHub AI 编程工具 Copilot于是就想尝尝鲜&#xff0c;但是GitHub Copilot是需要申请的&#xff0c;只有申请通过的才能使用这款插件。就在今天我收到审核通过的邮件。于是想看看这插件是不是像其它网友说的那样强&#xff01;使用于是打开了我…

Android开发 人民币符号(¥)显示不一致的问题

不小心踩了个坑&#xff0c;发现这个人民币符号在不同机器上显示不一致&#xff0c;有的显示一横&#xff0c;有的显示两横。 百度查了一下&#xff0c;找到好很多解决办法&#xff0c;改字体&#xff0c;用图片等等。 最后发现原来用的是全角的“&#xffe5;”的原因&#xf…

《iVX 高仿美团APP制作移动端完整项目》09 订单页制作

订单页制作比较简单&#xff0c;界面如下&#xff1a; 一、标题 首先创建一个页面&#xff0c;命名为订单页&#xff0c;并且给予背景色为黄色&#xff1a; 随后创建一个行&#xff0c;命名为主要并给予对应的基础属性&#xff1a; 接着给予这个主要行对应的上下内边距使其…