📝 展开文字版内容(供搜索引擎索引)
🐋 Docker
一句话类比:Docker 就像一个自带一切的集装箱——不管放到哪台电脑上,打开后里面的程序和环境都完全一样
大白话说:Docker 解决了软件开发中最经典的问题:「在我电脑上好好的,到你那里就出错了」。它把你的代码和所有运行需要的东西(操作系统依赖、数据库版本、配置文件)打包成一个「容器」,在任何装了 Docker 的机器上都能一模一样地运行。
拆开看:
- Dockerfile:打包说明书,告诉 Docker 要装什么、怎么装
- Image 镜像:按 Dockerfile 打包好的只读模板
- Container 容器:镜像的运行实例,可以启动/停止/删除
- Docker Hub:存放和分享镜像的公共仓库
- Docker Compose:多容器编排工具,一条命令启动整个应用栈
常见误解:
❌ Docker 就是更轻量的虚拟机 → ✅ 容器不是虚拟机,容器共享宿主机内核只隔离进程,虚拟机模拟整套硬件+操作系统,原理根本不同
❌ 用了 Docker 就不会有 Bug,能解决所有环境问题 → ✅ Docker 只解决环境不一致问题,代码 Bug 在容器里照样出错——只是保证了在哪台机器上出的错都一样,方便调试
类比的边界:
- 集装箱物理独立,Docker 容器共享宿主机内核——内核漏洞可能影响所有容器
- 集装箱打开即用,Docker 镜像有层级结构(UnionFS),层可缓存复用
- Docker 容器只在 Linux 内核上原生运行,Mac/Windows 上实际运行了一个轻量 Linux 虚拟机