当前位置: 首页 > news >正文

Docker 容器应急

容器网络简单理解

容器拥有n多张veth网卡与一张docker0网卡

在这里插入图片描述

docker 五种网络

  • bridge
    默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。
  • host
    容器不会获得一个独立的network namespace,而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息,而是使用宿主机的。容器除了网络,其他都是隔离的。
  • none
    获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置。
  • container
    与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的。
  • 自定义网络
    与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名容器之间网络通信。

默认都为bridge网卡
在这里插入图片描述

容器内为什么能通baidu
容器内虚拟网卡网卡——》容器网关(宿主机虚拟网卡)——》docker0网卡——》物理网卡

在这里插入图片描述

两种情况

我做了一个实验,发现两种情况
第一种情况,容器会走vet网卡在到docker0网卡,所以在两张网卡上都能抓到对应的数据包。

在这里插入图片描述

在这里插入图片描述

第二种情况,在docker0网卡上抓不到流量,只能在对应的veth网卡上才能抓到流量
在这里插入图片描述
我发现docker0上并不能抓到容器的流量
在这里插入图片描述
在使用traceroute查看路由后,我发现,容器在出网关后到了192.168.68.2,该ip为物理机物理网卡网关,意思是,该容器,从容器虚拟网关出来后直接到了物理机网关,跳过了docker0网卡,所以使用tcpdump -i docker0抓取该容器流量是抓不到的
在这里插入图片描述
在这里插入图片描述
为什么会出现这总问题,在查看iptables规则时,我发现,在docker创建时可能会添加一些规则

iptables -t nat -S

在这里插入图片描述

-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

这条规则的意思是如果docker0收到来自172.17.0.0/16这个网段的外出包,docker0会交给MASQUERADE处理,而MASQUERADE处理方式是将包源地址替换成host地址发出
在这里插入图片描述
所以,跳过docker0网卡直接到物理网卡的原因是iptables规则中有该网卡直接nat出去的规则

基础信息收集

基础信息

观察其状态,映射端口

docker container ls
docker ps

在这里插入图片描述

详细信息

检查容器详细信息,挂载的数据卷,运行时间,mac地址等信息

docker inspect ID

在这里插入图片描述

资源使用

检查容器资源使用情况

docker stats ID

在这里插入图片描述

进程信息

容器进程信息

docker top ID

在这里插入图片描述

文件

容器文件信息

docker diff ID | grep A
# A -add
# D -delete
# C -change

在这里插入图片描述

应急处置

  1. 构建镜像,保留证据
  2. 检查异常
  3. 暂停容器内进程
  4. 断开容器网络

构建镜像

docker commit -m="说明" ID check08:1.0

在这里插入图片描述
暂停容器中的进程,包括后台,守护进程等,文件系统运行状态不变

docker pause ID # 暂停
docker unpause ID # 恢复

在这里插入图片描述

定位容器

容器通过docker0网卡进行通信,可以通过tcpdump指定网卡找到异常网络连接,然后进一步关联容器。
情况一:ids或其他安全设备告警,某台linux上出现了恶意连接,该linux主机上部署了多个容器,该如何排查是那个容器出现了问题?

在宿主机上通过netstat -an 是看不到容器内的网络连接的,而一台台进入容器查看网络连接,排查效率很慢,而且很多容器没有安装net-tools工具,没有netstat工具。

抓取流量

情况一:直接通过docker0网卡进行tcpdump流量抓取,通过安全设备给出的IP地址定位容器。
情况二:docker0网卡无法抓取到,只能一个一个网卡进行排查。

抓取docker0网卡流量

tcpdump -i docker0 dst host xx.xx.xx.xx -v -w docker.pcap

抓取容器对应的veth流量

iptables -t nat -S # 查看对应网卡

在这里插入图片描述

tcpdump -i br-28b6e6930d36 dst host 172.29.246.156 -v -w br-28b6e6930d36.pcap
tcpdump -i br-28b6e6930d36 dst host 172.29.246.156 -v

定位容器

利用docker inspect -f匹配模块文件匹配对应容器

docker inspect -f '{{.Name}}{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) | grep 172.19.0.2docker container ls -a | grep 82-pte-lamp-1

开源容器扫描器

https://github.com/chaitin/veinmind-tools

在这里插入图片描述

相关文章:

Docker 容器应急

容器网络简单理解 容器拥有n多张veth网卡与一张docker0网卡 docker 五种网络 bridge 默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。host 容器不会获得一个独立的network namespace,而是与宿主机共用一个…...

webservice接口自动化测试

1&#xff0c;用soupui进行测试 2&#xff0c;安装soupUI 3&#xff0c;测试的时候是给了一个wdsl 操作步诹&#xff1a;new &#xff08;name , 填写地址&#xff09;---导入wsdl文件---看到所有的接口 发送请求的格式<xml> canshu</xml> 应用场景&#xff0c…...

精益生产与MES生产管理系统相互融合

近年来&#xff0c;精益生产理念在企业管理中越来越受欢迎。它强调以最小的浪费&#xff0c;在最短的时间内&#xff0c;生产出高质量的产品。这一理念的实施手段包括准时制生产方式、适时生产方式等&#xff0c;消除浪费、看板、快换工装等都是精益提高的工具方针。 然而&…...

(c语言进阶)指针的进阶

一.字符指针 1.一般应用 &#xff08;1&#xff09;%c的应用 &#xff08;2&#xff09;%s的应用 字符指针没有权限通过解引用去改变指针指向的值 2.笔试题 题目&#xff1a;判断输出结果 int main() { const char* p1 "abcdef"; const char* p2 "…...

用路由器远程维护三菱PLC操作指南

用路由器远程维护三菱PLC操作指南...

FPGA面试题(7)

一.解释一下SPI的四种模式 01时钟极性CPOL空闲状态为低电平空闲状态为高电平时钟相位CPHA在第一个跳变沿采样在第二个跳变沿采样 模式CPOLCPHA描述模式000sclk上升沿采样&#xff0c;sclk下降沿发送模式101sclk上升沿发送&#xff0c;sclk下降沿采样模式210sclk上升沿发送&…...

Python接口自动化测试之【测试函数、测试类/测试方法的封装】

前言 在pythonpytest 接口自动化系列中&#xff0c;我之前的文章基本都没有将代码进行封装&#xff0c;但实际编写自动化测试脚本中&#xff0c;我们都需要将测试代码进行封装&#xff0c;才能被测试框架识别执行。 例如单个接口的请求代码如下&#xff1a; import requests…...

ROS仿真软件Turtlebot-Gazebo的安装使用以及错误处理[机器人避障]

很多时候由于机器人价格比较贵&#xff0c;而且会因为环境因素、操作失误或者摔坏等&#xff0c;所以我们可以先在仿真软件上做测试&#xff0c;也可以避免这些问题&#xff0c;虽然没有那么真实感&#xff0c;可毕竟是免费的嘛。我们可以在这些仿真的机器人身上去学习如何控制…...

把excel文件内容转化为json文件

js如何把excel文件转化为json文件呢&#xff1f;可以通过xlsx还有循环遍历来做 第一步&#xff1a;安装xlsx包 npm install xlsx这里我需要转化为这种类型 {key:value,key:value,key:value, }如果需要转化为其他格式&#xff0c;到时候需要在循环遍历的时候灵活运用 上代码…...

前端 - 将非 jpeg 格式图片转为 jpeg 格式、压缩图片

目录 将非 jpeg 格式图片转为 jpeg 格式压缩图片使用 将非 jpeg 格式图片转为 jpeg 格式 /common/compressImage/convertImage // 思路是创建一个图片&#xff0c;将file等于这个图片&#xff0c;然后创建一个canvas图层 &#xff0c;将canvas等比例缩放&#xff0c; //然后用…...

随着 ChatGPT 凭借 GPT-4V(ision) 获得关注,多模态 AI 不断发展

原创 | 文 BFT机器人 在不断努力让人工智能更像人类的过程中&#xff0c;OpenAI的GPT模型不断突破界限GPT-4现在能够接受文本和图像的提示。 生成式人工智能中的多模态表示模型根据输入生成文本、图像或音频等各种输出的能力。这些模型经过特定数据的训练&#xff0c;学习底层模…...

Zookeeper-JavaApI操作

JavaApI操作 JavaApI操作1) Curator 介绍2) Curator API 常用操作a) 建立连接与CRUD基本操作b) Watch事件监听c) 分布式锁c.1) 介绍c.2) Zookeeper分布式锁原理c.3) 案例&#xff1a;模拟12306售票 JavaApI操作 1) Curator 介绍 Curator 是 Apache ZooKeeper 的Java客户端库。…...

Vue2.0打包指定路由前缀

【1】修改vue.config.js 如下修改publicPath: module.exports {publicPath:/concert,lintOnSave: false }【2】修改router/index.js base指定路由前缀&#xff1a; const router new VueRouter({mode: history,base: /concert, //指定路由前缀// base: process.env.BASE_…...

[vxe-table] 合并行后滚动错位

使用vxe-table的属性:span-method合并行&#xff0c;之后下拉后会错位 原因&#xff1a;缺少配置 scroll-y"{enabled: false}"参考&#xff1a; vxe-table合并行后错位...

动态规划:05不同路径

动态规划&#xff1a;05不同路径 62. 不同路径 五部曲 确定dp数组含义&#xff1a;到达第i&#xff0c;j位置的路径条数为d[i][j] 确定递归公式&#xff1a;d[i][j]d[i-1][j]d[i][j-1] 我们发现&#xff0c;想要到d[i][j]&#xff0c;只能从d[i-1][j]或者d[i][j-1]达到 dp数…...

html与css知识点

html 元素分类 块级元素 1.独占一行&#xff0c;宽度为父元素宽度的100% 2.可以设置宽高 常见块级元素 h1~h6 div ul ol li dl dt dd table form header footer section nav article aside 行内元素 1.一行显示多个 2.不能设置宽高&#xff0c;宽高由元素内容撑开 常见行内…...

spring boot simple类型cache使用

注意&#xff1a;这里用的不是 redis 的缓存&#xff0c;simple 的缓存默认用的是 java 的 ConcurrentHashMap&#xff0c; 单纯的 simple 缓存&#xff0c;只需要引入下面的 pom 依赖即可&#xff1a;spring-boot-starter-cache <dependency><groupId>org.springf…...

springboot-aop-redis-lua 实现的分布式限流方案

1.自定义限流注解 Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Inherited Documented public interface Limit {/*** 名字*/String name() default "";/*** key*/String key() default "";/*** Key的前缀*/String…...

C++ realloc()用法及代码示例

C realloc()用法及代码示例 C 中的realloc() 函数重新分配先前分配但尚未释放的内存块。realloc() 函数重新分配先前使用 malloc() 、 calloc() 或 realloc() 函数分配但尚未使用 free() 函数释放的内存。如果新大小为零&#xff0c;则返回的值取决于库的实现。它可能会也可能…...

【Go】gin框架生成压缩包与下载文件

在没有加入下面这串代码之前&#xff0c;下载的压缩包一直为空。遂debug了两个小时。。。 可以在服务端本地创建压缩包。单独将服务端本地的压缩包发送给客户端也是没问题的。但是两个合起来&#xff0c;客户端接收到的压缩包内容就为空了。 期间也尝试了 zipFile.Close() zipW…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...