Docker
你可能会说
同一份代码,我电脑能跑,服务器就报错,同事让我用 Docker。
把应用和它的依赖一起打成镜像镜像分层存储,容器是镜像的运行实例;同一镜像在哪台机器上跑,环境都一样。它解决「装环境」,不解决「多机调度」。
也常被叫作容器镜像
什么时候选它
- 统一开发、测试、生产环境
- 一键起依赖(数据库、缓存、消息队列)做本地开发
- 交付物标准化:镜像推到仓库,到哪都 docker run
- CI 里构建、测试、扫描的隔离环境
什么时候别选
- 多机调度、自动扩缩容、自愈——那是 Kubernetes 的事
- 只想装一个桌面软件,没必要容器化
- 把容器当安全边界:它共享宿主机内核,隔离弱于虚拟机
容易混在一起 · 怎么分
Docker≠虚拟机
容器共享宿主机内核,启动快、开销小;虚拟机有独立内核,隔离更强但更重。
Docker≠Kubernetes
Docker 负责打包和运行一个容器;k8s 负责在很多机器上调度很多容器。
镜像≠容器
镜像是只读模板,容器是它运行起来的实例,可写层在容器上。
Q面试会问什么
- 问:镜像为什么分层?
答:每层只读、可复用和缓存,构建和分发更快;容器启动时再加一层可写层。 - 问:容器和虚拟机的区别?
答:容器共享内核、进程级隔离、秒级启动;虚拟机虚拟硬件、独立内核,隔离更强但更重。 - 问:多阶段构建解决什么?
答:构建环境和运行环境分离,最终镜像只带运行所需文件,体积和安全面都更小。
延伸阅读 · 权威出处