话不多说 ,先聊聊什么是docker
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
目标:实现轻量级的操作系统虚拟化解决方案。
Docker 的基础是: Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
docker 与VM的比较
- 本质上区别:
VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用。
Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。
- 使用上区别:
虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。
由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。
docker的核心概念
-
镜像image:
镜像就是一堆只读层,这些只读层是docker内部实现的细节,并且可以在docker宿主机的文件系统中访问到,但是在用户角度看来,只有一个文件系统,这是因为统一文件系统技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,所以用户看到只存在一个文件系统。如图所示:多个只读层,它们重叠在一起。除了最下面一层,其它层都会有一个指针指向下一层。一个镜像可以包含一个完整的操作系统环境 一个镜像可以创建多个容器
-
仓库repository:
仓库是集中存放镜像文件的场所; 仓库分为两种形式:公开仓库和私有仓库; 最大的公开仓库是:Docker Hub
-
容器container:
docker利用容器来运行应用 容器可以被启动、开始、停止、删除 每个容器是相互隔离的; 容器和镜像的定义几乎一模一样,唯一不同的是: 容器最上面的那一层是可读可写的
容器图如下:最上面一层是可读可写的