本篇博客介绍了 Docker 的应用场景,优势及其相关的一些概念。
Docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器的性能开销极低。
Docker 的应用场景
- Web 应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
Docker 的优势
1、更快速的交付和部署。使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成后,测试和运维人员可以直接使用相同环境来部署代码。Docker可以快速创建和删除容器,实现快速迭代,大量节约开发、测试、部署的时间。
2、更高效的资源利用。Docker容器的运行不需要额外的虚拟化管理程序支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。
3、更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,这种兼容性让用户可以在不同平台之间轻松地迁移应用。
4、更简单的更新管理。使用Dockerfile,只需要修改配置文件,就可以替代以往大量的更新工作。所有修改都以增量的方式进行分发和更新,从而实现自动化且高效的容器管理。
Docker 的镜像、容器和仓库
1、Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
2、Docker容器是由Docker镜像创建的运行实例。Docker容器类似虚拟机,可以支持的操作包括启动、停止、删除等。每个容器间是相互隔离的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
3、Docker 仓库是用来存储镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。Docker运行中使用的默认仓库是 Docker Hub 公共仓库。
Docker 与虚拟机的比较
作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著的优势:
1、Docker容器很快,启动和停止可以在秒级实现,这比传统的虚拟机方式要快得多;
2、Docker容器对系统资源需求很少,除了运行在其中的容器外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销,一台主机上可以同时运行数千个Docker容器;
3、Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低;
4、Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率;
虚拟机是模拟运行的一整套操作系统(提供了运行时环境和其他系统环境)和运行在其上面的应用。
Docker 容器是独立运行的一个或一组应用,以及它们运行时所必需的环境。
Docker 技术与虚拟机技术的特性比较:
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
对 docker 的理解
从 Dockerfile 文件的内容,即系统所完成的操作来看,docker其实是在一个简化的极小版Linux操作系统中安装应用程序所需的环境,然后可以部署应用程序,与外部进行隔离,通过接口和网络与外部进行资源和信息交换。
docker = linux + 应用环境 + 应用程序