什么是 Docker
注意:Docker 属于容器技术,而容器不仅仅是 Docker,Docker 是实现容器的一种代表技术
Docker 是一种开源的容器化平台,用于构建、封装和分发应用程序及其依赖项。它提供了一个轻量级的容器运行时环境,使应用程序能够在隔离的容器中运行,无论是在开发环境、测试环境还是生产环境中
使用 Docker,开发人员可以将应用程序及其依赖项打包成一个称为 Docker 镜像的可移植容器,这些镜像可以在不同的环境中进行部署和运行,而无需担心环境差异或依赖项冲突。Docker 镜像是一个可重复构建的、自包含的单元,其中包含了应用程序的代码、运行时环境、库和配置等
通过使用 Docker,开发人员可以实现快速、可靠的应用程序交付和部署。Docker 提供了一系列工具和命令,使用户能够方便地构建、管理和运行容器,而无需手动配置和管理底层的操作系统和依赖项。
总结起来,Docker 是一种容器化平台,通过封装应用程序及其依赖项为可移植的 Docker 镜像,提供了一种快速、可靠、可移植的应用程序交付和部署解决方案
Docker 组成
- Docker 引擎(Docker Engine):Docker 引擎是 Docker 的核心组件,负责管理容器的生命周期、构建和运行容器。它包括 Docker 守护进程(Docker daemon)和 Docker 客户端(Docker client)
- Docker 守护进程(Docker daemon):Docker 守护进程,用于运行 Docker 容器
- Docker 客户端(Client):客户端使用 docker 命令或其他工具调用 Docker API
- Docker 镜像(Images):Docker 容器的模板,Docker 镜像是一个可执行的软件包,包含了运行应用程序所需的一切,包括代码、运行时环境、库和配置等。镜像是容器的基础,可以通过 Dockerfile 定义和构建镜像,并通过镜像来创建和运行容器。
- Docker 仓库(Registry):保存镜像的地方,即镜像仓库。Docker 仓库是用于存储和共享 Docker 镜像的中央注册处。Docker Hub 是 Docker 官方提供的公共仓库,包含了大量的官方和社区维护的镜像。除了 Docker Hub,还可以使用私有仓库来存储和管理自己的镜像
- Docker 容器(Container):使用镜像生成对外提供一个或一组服务的实例,其本质就是将镜像中的程序启动后生成的进程
Docker 实现流程
Docker 优点
- 快速部署:短时间内可以快速部署多个容器,实现快速交付
- 高效虚拟化:基于 Linux 内核实现应用虚拟化,不需要 Hypervisor 的额外支持,相比虚拟机大幅提升性能和效率
- 节省开支:提高服务器利用率,降低 IT 支出
- 简化配置:将运行环境打包保存至容器,直接启动即可使用
- 环境统一:将开发、测试、生产等应用的运行环境进行标准化和统一,减少环境不一致带来的各种问题
- 快速迁移和扩展:可实现跨平台运行在物理机、虚拟机、公有云等环境,良好的兼容性实现在任意环境运行容器
- 更好的实现面向服务的架构:通常一个容器只部署运行一个服务,实现分布式应用模型,更加方便的进行横向扩展,减少不同服务之间的相互影响
- 灵活:即使是最复杂的应用也可以集装箱化
- 轻量级:容器利用并共享主机内核
- 可互换:可以即时部署更新和升级
- 便携式:可以在本地构建,部署到云,并在任何地方运行
- 可扩展:可以增加并白动分发容器副本
- 可堆叠:可以垂直和即时堆叠服务
Docker 缺点
- 隔离性:多个容器共用宿主机的内核,各应用之间的隔离不如虚拟机彻底
- 安全性:Docker 中普通用户具备对容器进行操作的权限
- 如果容器内进程需要查看和调试,在每个容器内都需要安装相应的工具,造成存储空间的重复浪费