Docker是什么?
Docker是基于Go语言实现的开源工具。
目标:一次镜像,处处运行
传统虚拟机和容器
传统虚拟机:安装在主操作系统上的虚拟机管理系统。我们经常是在VMware虚拟机上安装操作系统,在操作系统上安装我们需要使用的软件,进行操作。传统的应用开发完成之后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。
容器:Linux容器,不是模拟一个完整的操作系统,而是对进程进行隔离,通过容器将软件运行所需的所有资源打包到一个隔离的容器中。容器化后只需交付少量容器镜像文件,在正式生产环境中加载镜像运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和配置,系统因此高轻量并保证部署在任何环境中的软件都能始终如一的运行。
二者不同之处:
(1)传统虚拟机是虚拟出一套硬件后,在其上面运行一个完整的操作系统,在该系统上再运行所需要的应用进程;
(2)容器内的应用进程直接运行于宿主机的内核,容器内没有自己的内核且也没有进行硬件虚拟;因此容器要比传统虚拟机更为轻便;
(3)每个容器之间互相隔离,每个容器都有自己的文件系统,容器之间进程不会互相影响,能区分计算资源。
Docker软件
Docker并不是一个通用的容器工具,它依赖于已经存在并运行的Linux内核环境。在Windows系统上安装的Docker需要依赖WSL。Docker是内核级虚拟化,在一台物理机上可以运行很多个容器实例,大大提升物理服务器的CPU和内存的利用率。
WSL(Windows Subsystem for Linux)是微软开发的Windows子系统,允许用户在Windows操作系统中直接运行Linux环境,无需双系统或虚拟机。
Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,传统的虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现在启动速度快、占用小。
Dokcer实质上是在Linux环境下创建一个隔离的文件环境。每个容器都是一个轻量版的Linux系统。
Docker的组成:镜像(image)、容器(container)、仓库(repository)
Docker镜像(image)
Docker镜像其实相当于一个模板,通过镜像来创建容器,一个镜像可以创建多个容器。
Docker容器(container)
容器是用镜像创建的运行实例,容器类似于于一个虚拟化的运行环境
Docker仓库(repository)
集中存放镜像文件的场所,仓库分为公开仓库和私有仓库。
最大的公开仓库是Docker官方的Docker Hub:https://hub.docker.com/