1 为什么使用 Docker?
- 避免因为环境配置导致程序运行出错
- 跨操作系统使用
2 Docker 简介
2.1 Docker 介绍
解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。Docker 是使用 GO 语言开发的。
Docker 依托于 Linux 系统,所以在 Windows 上使用 Docker,需要安装 VM。Mac 上也类似。
Docker 官网: http://www.docker.com
Docker Hub 官网下载镜像: https://hub.docker.com/
2.2 Docker 理念
Docker 的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的 APP(可以是一个 WEB 应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
3 传统虚拟机 VS 容器虚拟化
3.1 各自实现方式
- 传统虚拟机技术:虚拟一套硬件,并在上面直接运行一个完整的操作系统,在该系统上运行程序。
- 容器虚拟化技术:容器内的应用程序直接运行在宿主的内核中,容器内没有自己的内核且也没有进行硬件虚拟。更轻便,一般是 MB 级别。
- 容器资源隔离:进程隔离、网络隔离、用户隔离
3.2 为什么 Docker 更快?
- docker 有着比虚拟机更少的抽象层
由于 docker 不需要 Hypervisor(虚拟机)实现硬件资源虚拟化,运行在 docker 容器上的程序直接使用的都是实际物理机的硬件资源。因此在 CPU、内存利用率上 docker 将会在效率上有明显优势。 - docker 利用的是宿主机的内核,而不需要加载操作系统 OS 内核
当新建一个容器时,docker 不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载 OS,返回新建过程是分钟级别的。而 docker 由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个 docker 容器只需要几秒钟。