如下图是比较常用的虚拟机:
Docker的脱颖而出:
这时候Dokcer就派上了用场,Docker在概念上与虚拟机非常类似。但是Docker更轻量,它不会去模拟底层的硬件 ,只会为每一个应用提供完全隔离的运行环境。你可以在容器中配置不同的应用环境,并且不用的环境之间互相不影响,这个“环境”在Docker中也被称作为Container(容器)。
Docker和虚拟机技术的区别?
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker技术比虚拟机技术更为轻便、快捷。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
如果想详细了解,可以参考文章:docker与虚拟机的区别👉
Docker容器和虚拟机的区别总结:
|
特性
|
docker容器
|
虚拟机
|
|
启动
|
秒级
|
分钟级
|
|
硬盘使用
|
一般为MB
|
一般为GB
|
|
性能
|
接近原生(宿主机)
|
弱于原生
|
|
系统支持量
|
单机支持上千个容器
|
一般几十个
|
Docker中的三个重要概念
Docker中的三个重要概念分别是:Image(镜像),Container(容器),Repository(仓储)。
Image(镜像)一个特殊的文件系统
你可以把它理解成一个虚拟机的快照(Snapshot),里面包含了你要部署的应用程序以及它所关联的所有库。
操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
Container(容器)镜像运行时的实体
这里的容器就像是一台台运行起来的虚拟机,里面运行了你的应用程序,每个容器是独立运行的他们相互之间不影响。通过一个镜像,我们可以创建许多个不同的Container容器。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和类的实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
Repository(仓储)集中存放镜像文件的地方
镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务(就像Git仓库一样),Docker Registry就是这样的服务。
一个Docker Registry中可以包含多个仓库(Repository),每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。
Docker 架构及工作原理
Docker使用客户端-服务器架构。Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发Docker容器等繁重的工作。Docker 客户端和守护进程可以运行在同一个系统上,或者您可以将一个 Docker 客户端连接到一个远程 Docker 守护进程。Docker 客户端和守护进程通过 UNIX 套接字或网络接口使用 REST API 进行通信。
Dockerfile(自动化脚本)
主要是用来创建我们之间讲到的镜像,这个过程就好比我们在虚拟机中安装操作系统和软件一样,只不过是通过Dockerfile这个自动化脚本完成的。
Dockerfile详解教程文章:Dockerfile制作自己的镜像文件👉

介绍:Portainer是一个开源的、轻量级的Docker环境管理UI(是Web应用的形式),可以用来管理Docker宿主机和docker swarm集群。
Github 上项目地址:https://github.com/portainer/portainer
官网地址:https://www.portainer.io
支持的系统:Linux, Mac OS X, Windows。
功能特性:
- 管理仓库、网络、数据卷、密钥、镜像、容器
- 管理你的配置,例如告警、监控
- 检查容器、查看容器日志、可视化状态查看
- 进入容器控制台
- 可以添加扩展
- 有一套 RBAC 基于角色的权限控制系统
DockStation
介绍:DockStation是一个免费的、以开发人员为中心的用于管理基于 Docker的桌面应用程序。您可以仅使用 GUI 来监控、配置和管理服务和容器,而不是大量的 CLI 命令。
官网地址:https://dockstation.io/
Github地址:https://github.com/DockStation/dockstation
支持的系统:Linux, Mac, Windows
功能特性:
- 可以非常方便的操作 Docker 和 DockerCompose。
- 可以帮助我们管理容器、Service服务(本地远程都可以),并监控他们
- 可以轻松跟踪 CPU、内存、网络、磁盘I/O、开放端口
- 可以把常用的操作组织成一个项目,通过项目的方式来检查容器状态,以图形化的方式管理。
Docker Desktop
介绍:Docker Desktop 是一款易于安装的应用程序,使您能够构建和共享容器化应用程序和微服务。
官网地址:https://www.docker.com/products/docker-desktop
支持的系统:Mac, Windows
功能特性:
- 能够以多种语言和框架在任何云平台上容器化和共享任何应用程序
- 轻松安装和设置完整的 Docker 开发环境
- 包括最新版本的 Kubernetes
- 自动更新,让您保持最新状态和安全
- 在 Windows 上,能够在 Linux 和 Windows Server 环境之间切换以构建应用程序
- 使用本机 Windows Hyper-V 虚拟化实现快速可靠的性能
- 能够通过 Windows 机器上的 WSL 2 在 Linux 上本地工作
- 代码和数据的卷安装,包括文件更改通知和轻松访问本地主机网络上运行的容器
Docker学习系列文章
入门必备:十本你不容错过的Docker入门到精通书籍推荐👉
day1、全面的Docker快速入门教程👉
day2、CentOS 8.4安装Docker👉
day3、Windows10 Docker安装详细教程👉
参考文章:
官方Docker-docs
Docker 10分钟快速入门-B站视频