什么是Docker
我的理解就是一个更轻量级的虚拟机,跟虚拟机的不同在于Docker是直接构建在HostOS上,利用HostOS的内核运行自己的进程,而虚拟机则是要先虚拟出一套硬件,然后再在这套虚拟出来的硬件上构建自己的OS(所以在用VMWare装虚拟机的时候我们可以自己去设置CPU、内存、硬盘大小),所以比起虚拟机,Docker更加轻便。
虚拟机
Docker
为什么用docker
- 资源利用率高
因为docker的轻便性,所以省掉了比如虚拟硬件、构建完整操作系统等开销,一台机器可以跑很多个docker - 启动快
- 一致的运行环境
可以通过docker构建开发环境,保证代码运行环境的一致 - 轻松的迁移、维护和扩展
一个关于docker和虚拟机的总结
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | MB | GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 上千 | 几十个 |
Docker基本概念——镜像
Docker镜像相当于Linux的root文件系统,这个root文件系统大概理解成一个初始化的地方,系统初启的时候会从root文件系统读取各种配置服务之类的。
Docker镜像不包含任何动态数据,内容在构建之后也不会变化
(就跟我们下载的操作系统iso类似?总之就是read-only的)
Docker的镜像是基于分层文件系统的,也就是一层一层构建好的,每一层构建好之后就不会变化,就算后面对其修改那也算是下一层的记录(跟iso还是不一样的,镜像是一个虚拟概念,不是由文件构成,而是由一组文件系统构成)
Docker基本概念——容器
容器是镜像的实例化,就跟类和对象的关系一样。容器是镜像运行的实体,可以运行,暂停和删除等。容器基于进程,有自己的rootfs,运行在一个隔离的空间,所以很多资源都是独立的。
容器和镜像一样也是分层存储,容器以镜像为基础构建,这个镜像称为基础层,往上是一个容器存储层,用来存储容器运行时的数据,这一层生命周期和容器一致,容器关闭的时候就没了。
一般来说不要往容器存储层写数据,因为不能持久化。(一般选择数据卷(volume)或者绑定宿主目录)
Docker仓库
我的理解是Docker Registry类似Github这样的东西?一个Registry包含多个仓库(Repository),每个仓库又有多个标签(tag),每个tag就是一个镜像,所以访问一个镜像的格式就是:<repository>:<tag>,不给出标签则默认为latest。
网友评论