开发者学堂课程【现代应用容器技术快速入门第二课时:容器技术基础(2)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/830/detail/13951
容器技术基础(2)
本节内容
1. Dockor 系统组件
2. Docker 镜像
3. Docker 容器
4. Docker Registry
5. Docker 容器的状态数据存储
6. 存储卷
7. 将容器接入网络
8. Docker 网络
1.Dockor 系统组件
• Docker 系统有三个关键组件.
– pocker cLl
– Docker Daemon
– Registry
• Docker Daemon
– REST API
– Objects
• lmage
• Container
• Volume
• Network
2.Docker 镜像
• 运行容器时,基于Mount 名称空间建立的隔离文件系统中的内容来自镜像
– Docker 镜像是一个特殊的文件系统,它必须包含运行应用程序所需的一切——所有依赖项、配置、脚本、二进制文件等
– 镜像还包含容器的其他配置,例如环境变量、要运行的默认命令、和其他元数据
– 通常,镜像还要定义默认启动的应用
• Docker 镜像由许多层( Layer)叠加而成
– 依赖于特殊的存储驱动,例如aufs、devicemapper.overlay2等
– 尽管每种存储驱动程序实现的管理方式不尽相同,但它们都使用可堆叠的镜像层和写时复制( CoW)策略
3.Docker 容器
• 运行有Docker Daemon 的主机负责管理本地容器实例的生命周期
– Docker Daemon 通过其监听的Socket API 接收Docker 对象的管理请求,包括容器的生命周期中的各类管理操作
– 容器实例的创建要基于本地存储的Docker镜像进行
– 实例启动后,要在前台( foreground,不能转为守护进程模式)运行镜像中定义的默认应用,或用户指定的应用
• 创建容器时,指定了本地不存在的镜像时,则需要由Docker Daemon 自动至Registry 上进行下载
– Docker Daemon 默认使用的Registry是DockerHub
4.Docker Registry
• The Registry is a stateless, highly scalable server side application that stores and lets you
distribute Docker images.
• Registry 上的镜像存储于“仓库(Repository)”中,仓库可隶属于根名称空间或特定的名称空间
– 每个镜像由“仓库名:标签名”标识
– 也可由镜像的Hash码标识
5.Docker 容器的状态数据存储
• 对于容器实例来说,底层的Docker 镜像处于只读状态,进程的读写操作只能在创建容器时生成的叠加于镜像栈最上层的可写层中进行,该层也称为容器层
• 根据同一镜像,Docker 能够创建出运行环境完全一致的容器,在容器中添加新数据或修改现有数据的结果,都存储在由容器附加在镜像栈顶的可写层中
• 删除容器,将一同删除其可写层,这将导致容器生成的状态数据全部丢失
6.存储卷
• 存储卷
– 支持使用存储卷(Volume)技术来绕过存储驱动程序,将数据存储在宿主机可达的存储空间上,以实现跨容器生命周期的数据持久性
– 也支持使用卷驱动器(Docker引擎上的存储卷插件)将数据直接存储于远程存储设备上,以实现跨主机生命周期的数据持久性
7.将容器接入网络
• 将容器接入网络通常要经由这样几个步骤
1.好相应的容器网络,通常是虚拟网络;
– 单机的桥接式网络
– 跨主机的Overlay 或Underlay 网络2.为每个容器配置一个独占的Network 名称空间;
3.为容器添加专用的接口设备,并将其接入到容器网络中;
4.为容器接分配相应的IP地址及其它网络属性值,并按需生成NAT 规则;
8.Docker 网络
• Docker 默认支持4种网络模式
– host 模式
– container 模式
– none 模式
– bridge 模式