没问题!我用人话重新讲一遍。想象Docker就像一个个”透明箱子”,里面装着运行中的程序。取证就是检查这些箱子里有没有”犯罪痕迹”。

一、先看看有几个”箱子”在跑

1
2
3
4
5
6
7
8
# 查看正在运行的箱子
docker ps

# 查看所有箱子(包括已经停掉的,这个很重要!)
docker ps -a

# 查看更详细的信息(不截断显示)
docker ps --no-trunc

简单解释:就像看仓库里哪些箱子还在动,哪些已经不动了。犯罪份子可能用完就停了,所以要看全部。


二、检查”箱子”里装了什么

1
2
3
4
5
# 查看某个箱子的"档案"(配置、网络、挂载等所有信息)
docker inspect 箱子ID或名字

# 如果想看更友好的格式
docker inspect 箱子ID --format='{{json .}}' | python -m json.tool

举例docker inspect my_nginx 就能看到这个nginx箱子的一切秘密。


三、查看”箱子”的监控录像(日志)

1
2
3
4
5
6
7
8
9
10
11
# 看某个箱子的所有历史记录
docker logs 箱子ID

# 带时间戳的日志(取证必备)
docker logs --timestamps 箱子ID

# 只看最近100条
docker logs --tail 100 箱子ID

# 保存日志到文件
docker logs 箱子ID > 证据.log

通俗讲:就像查监控,看箱子里发生过什么事。


四、检查”箱子”的网络通话记录

1
2
3
4
5
# 看箱子用了哪些"电话线"(端口)
docker port 箱子ID

# 查看所有箱子的IP地址
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress}}' $(docker ps -aq)

简单理解:箱子有没有和外面”打电话”,联系了谁。


五、查看”箱子”的”设计图纸”(镜像)

1
2
3
4
5
6
7
8
# 看本地有哪些图纸
docker images

# 看图纸上每一层写了什么(可能藏有恶意代码)
docker history 镜像ID

# 把图纸打包带走分析
docker save 镜像ID -o 图纸备份.tar

类比:就像拿到盖房子的图纸,看哪一层加了”暗门”。


六、现场勘查:箱子里的文件

1
2
3
4
5
# 不进入箱子,直接列出里面的文件变化
docker diff 箱子ID

# 从箱子里复制文件出来(不破坏现场)
docker cp 箱子ID:/etc/passwd ./证据文件

重点:就像用X光扫箱子,不打开也能看到里面有啥变化。


七、一键收集所有证据(推荐新手用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建取证文件夹
mkdir docker_证据_$(date +%Y%m%d)
cd docker_证据_$(date +%Y%m%d)

# 保存所有箱子清单
docker ps -a > 箱子清单.txt

# 保存所有图纸清单
docker images > 图纸清单.txt

# 对每个箱子收集档案(简单版)
for 箱子 in $(docker ps -aq); do
echo "正在取证箱子: $箱子"
docker inspect $箱子 > 箱子_${箱子}_档案.json
docker logs --timestamps $箱子 > 箱子_${箱子}_日志.txt 2>&1
done

操作提示:复制粘贴就行,会自动给每个箱子生成报告。


八、小白特别注意

  1. 只看不改:优先用docker inspectdocker logs,不要用exec进入箱子,会”污染现场”
  2. 时间很重要:加--timestamps就像给监控加上时间水印
  3. 停掉的箱子也要看:犯罪份子可能用完就停了:docker ps -a是关键
  4. 最常用三句话
    • docker ps -a(看所有箱子)
    • docker logs 箱子ID(看监控)
    • docker inspect 箱子ID(看档案)

遇到可疑情况,先拍照(导出日志),再分析!


九、超简单记忆口诀

  • 箱子列表docker ps -a
  • 查监控docker logs 箱子ID
  • 看档案docker inspect 箱子ID
  • 拷证据docker cp 箱子ID:路径 ./

记住这四条,基本就能应对80%的取证场景了!

需要我详细解释哪条命令,或者举具体例子吗?