Docker包括一个命令行程序、一个后台守护进程,以及一组远程服务。它解决了常见的软件问题,并简化了安装、运行、发布和删除软件。这一切能够实现是通过使用一项UNIX技术,称为容器。 Docker不提供容器技术,它隐藏了直接和容器软件打交道的复杂性。
Docker容器与虚拟机的区别
- 虚拟机:提供虚拟的硬件,可安装一个操作系统和其他程序。它们需要很长的时间(通常以分钟计)来创建,也需要显著的资源开销,因为它们除了要执行你需要的软件,还得运行整个操作系统的副本。(操作系统是所有用户程序和该计算机上运行的硬件之间的接口)
- Docker容器:运行在Docker容器中的程序接口和主机的 Linux 内核直接打交道。因为容器中运行的程序和计算机的操作系统之间没有额外的中间层,没有资源被冗余软件的运行或虚拟硬件的模拟而浪费掉。 ## Docker的运行
- 运行Docker可以认为是在用户空间运行着两个程序
- Docker守护进程。这个进程应始终处于运行状态。
- Docker CLI,它是与用户交互的Docker程序。如果要启动、停止或安装软件,可使用Docker CLI执行相应的命令。
- 运行的容器是以Docker守护程序的子进程运行,封装在容器中,并授权其在自身用户空间的存储子空间中运行。在容器中运行的程序,只能访问属于自己的该容器审定过的内存空间和资源。
- 容器的运行状态直接和容器内单次运行的程序状态关联。如果程序在运转,容器运行;如果程序停止,该容器被停止。重新启动容器会再次运行该程序。
- Docker可原生运行在Linux上,在OS X和Windows环境 中通过单独的虚拟机也可运行。(在OS X和Windows,Docker使用一个小而单一的虚拟机来运行所有的容器。) ## Docker的优势
- 简化软件安装及轻松管理依赖关系
- 提高可移植性:Docker改善了每个程序的可移植性,无论它用什么语言编写,为什么操作系统而设计,或是在什么样的运行环境下。
- 提高安全性:容器限制了一个程序对其他程序带来的影响范围、可访问的数据和系统资源的影响范围
- 保持机器整洁:当你要删除软件时,你只要告诉Docker要删除哪个软件。没有散落在外的文件,因为它们都被封装在容器中。