Docker基于dotCloud公司多年云服务技术的一个革新,是一个开源项目,主要项目代码在Github上进行维护。
App A / App B : 应用进程 App A / App B : 应用进程
Bins / Libs : 箱子容器 Bins / Libs : 箱子容器
Guest OS : 客户(虚拟机)操作系统 Docker Engine : Docker工具
Hypervisor : 程序管理监督者 Host OS : 主机(宿主)操作系统
Host OS : 主机(宿主)操作系统 Server : 服务器
Server : 服务器
Docker的优势(相对于传统的虚拟化方式):
- 更高效的利用系统资源——容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,系统资源利用率更高。
- 更快速的启动时间——秒级、毫秒级的启动时间
- 一致的运行环境——Docker的镜像提供了出内核外完整的运行环境,确保了应用运行环境的一致性。
- 持续交付和部署——通过制定应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile来进行镜像构建,并结合持续集成(Continuous Integration)系统进行集成测试, 而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment)系统进行自动部署。
- 更轻松地迁移——多平台上运行,物理机,虚拟机,公有云,私有云,笔记本上,无需担心运行环境的变化。
- 更轻松地维护和扩展——Docker使用分层存储以及镜像技术,使应用重复部分的复用更容易,使应用的维护更新更简单,使基于基础镜像进一步扩展镜像也很简单。另外,有很多高质量的官方镜像,即可以直接在生产环境使用,又可以作为基础进一步定制,降低应用服务的镜像制作成本。
Docker基本概念:镜像Image、容器Containter、仓库Repository
Docker镜像Image
操作系统分为内核和用户空间
Image相当于是一个root文件系统(Linux而言,内核启动后会挂载root文件系统为其提供用户空间支持),包含操作系统完整的root文件系统。
Docker镜像采用 UnionFS 技术,设计为分层存储的架构。其实际体现由多层文件系统联合组成。
镜像构建:
- 镜像构建时一层层构建
- 前一层是后一层的基础
- 每一层构建完不会再发生改变,在构建过程中后一层的任何改变只发生在它这一层。
分层存储的特征使得镜像复用、定制变得容易。
可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新镜像。
Docker容器Container
镜像Image —— 类
容器Container —— 实例
镜像是静态的定义
容器是镜像运行时的实体
容器也是分层存储。每一个容器运行时,是以镜像为基础层, 在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。
容器消亡 | 数据写入 | |
---|---|---|
容器存储层 | 消亡 | 无状态化,不应该写入任何数据 |
数据卷 | 不会消亡 | 文件写入操作 |
Docker Registry服务
一个Docker Registry | 包含多个仓库Repository | |
---|---|---|
每个仓库 | 包含多个标签Tag | 一般包含同一个软件不同版本的镜像 |
每个标签 | 对应一个镜像 | 常用于对应该软件的各个版本 |
<仓库名>:<标签> 指定具体是这个软件哪个版本的镜像。
<仓库名>: 如果没有给标签,则以latest为默认标签。
jwilder/nginx-proxy 仓库名经常以两段路径形式出现
jwilder Docker Registry 多用户环境下的用户名
nginx-proxy 对应的软件名
但这并非绝对,取决于所使用的具体Docker Registry的软件或服务。
Docker Registry 公开服务
Docker Registry 私有服务
安装 Docker
Windows10PC 安装Docker CE
Hyper-V 开启和使用
https://jingyan.baidu.com/article/f96699bbf2b889894f3c1b6f.html
Docker启动异常
解决办法:系统启用虚拟化
https://my.oschina.net/u/2289161/blog/1647017
注册Docker Cloud 账号
使用代理注册的账号ID
http://baijiahao.baidu.com/s?id=1597281958837115324&wfr=spider&for=pc