Redis容器了解Docker底层

Redis 容器底层环境分析

1. 容器基本信息

  • 容器 ID: 8809a15ac3b5f053bc21f1e0ef0d0a41144eeac96a6cf4acfad12d780681d2b9
  • 名称: /test-redis
  • 状态: running
  • 镜像: redis
  • 主进程 PID: 14441

2. 文件系统(OverlayFS)

OverlayFS 结构:

MergedDir (容器看到的根目录):

/var/lib/docker/overlay2/84ba32b1c4b139f2f3bff53c2f383111a73a52bed03d8e92ec2c243bc3cad352/merged

UpperDir (可写层):

/var/lib/docker/overlay2/84ba32b1c4b139f2f3bff53c2f383111a73a52bed03d8e92ec2c243bc3cad352/diff

LowerDir (只读层,共 9 层):

  • 9 个镜像层叠加

  • 使用符号链接缩短路径(l/ 目录)

容器根目录内容:

bin, boot, data, dev, etc, home, lib, lib64, media, mnt, opt,

proc, root, run, sbin, srv, sys, tmp, usr, var

关键发现:

  • 可写层(diff)目前为空,容器未写入文件
  • 所有文件来自镜像的只读层

3. 命名空间(Namespaces)

容器创建了以下命名空间:

命名空间 ID 作用
PID 4026532295 独立进程树
Network 4026532297 独立网络栈
Mount 4026532292 独立文件系统视图
IPC 4026532294 独立 IPC
UTS 4026532293 独立主机名
User 4026531837 用户映射
Cgroup 4026532296 Cgroup 视图
Time 4026531834 时间命名空间

4. 网络环境

网络配置:

  • IP 地址: 172.18.0.2/16
  • 网关: 172.18.0.1
  • MAC 地址: 02:42:ac:12:00:02
  • 网络: bridge (默认 Docker 网络)

网络接口:

lo: 127.0.0.1/8 (回环接口)

eth0: 172.18.0.2/16 (容器网卡,连接到 docker0 bridge)

网络命名空间: net:4026532297

5. 挂载点

主要挂载:

  1. OverlayFS 根文件系统 (overlay)
  1. /proc (proc)
  1. /dev (tmpfs)
  1. /sys (sysfs, 只读)
  1. /dev/shm (tmpfs, 64MB)
  1. /data (volume, Redis 数据目录)
  1. /etc/resolv.conf (DNS 配置)
  1. /etc/hostname (主机名)
  1. /etc/hosts (主机映射)

6. 进程环境

容器内进程:

  • PID 1: /sbin/init (systemd)
  • 多个 systemd 服务进程
  • 进程树独立于主机

7. Cgroup 配置

Cgroup 路径:

/sys/fs/cgroup/system.slice/docker-8809a15ac3b5f053bc21f1e0ef0d0a41144eeac96a6cf4acfad12d780681d2b9.scope

资源限制:

  • 内存: 无限制 (0)
  • CPU: 无限制 (0)
  • 使用 systemd cgroup 驱动

8. 安全配置

  • Privileged: false (非特权模式)
  • SecurityOpt: null (使用默认安全配置)
  • CapAdd/CapDrop: null (使用默认能力集)

9. 容器配置目录

容器配置存储在:

/var/lib/docker/containers/8809a15ac3b5f053bc21f1e0ef0d0a41144eeac96a6cf4acfad12d780681d2b9/

├── config.v2.json # 容器配置

├── hostname # 主机名

├── hosts # /etc/hosts

├── resolv.conf # DNS 配置

└── shm/ # 共享内存

总结

Docker 为这个 Redis 容器创建了:

  1. 文件系统:OverlayFS 联合挂载(9 层只读层 + 1 层可写层)
  1. 命名空间:8 个 Linux 命名空间(PID、Network、Mount、IPC、UTS、User、Cgroup、Time)
  1. 网络:独立的网络命名空间,veth pair,IP 172.18.0.2
  1. 进程:独立的进程树,PID 1 为 systemd
  1. 资源:Cgroup 目录(systemd 驱动)
  1. 安全:非特权模式,默认能力集
  1. 存储:1 个数据卷挂载到 /data

这些环境共同构成了一个隔离的容器运行环境。

相关推荐
瑞克-桑切斯29 分钟前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库
zyseo89 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
码间留白10 小时前
手把手把 GitHub 推上阿里云 ECS:Actions CI/CD 全链路避坑实录(折腾好几天,到 2 分钟见绿)
运维·阿里云·ci/cd·docker·devops·github actions
Vex2une10 小时前
Docker Desktop WSL2后端:2026年性能调优与避坑实战指南
windows·docker·desktop·gpu容器·容器开发·virtiofs·buildkit
xiaogai_gai11 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o11 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
程序员老赵11 小时前
Docker 部署青龙面板:轻松搭建定时任务管理平台
前端·docker·开源
TTATTC11 小时前
为什么单会话聊天做不好复杂工程?Claude Code 创作者的并发 Worktree 与记忆闭环实践
docker·开源
TTATTC12 小时前
状态机驱动长事务,还是 DAG 编排高并发?高可靠业务流程引擎的双核架构设计
docker·开源
殷忆枫12 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker