Docker学习笔记
什么是容器
依托于linux内核的虚拟化技术
什么是Docker
能够把应用程序自动部署到容器的开源引擎
Docker的目标
创建软件程序可移植的轻量容器,让其可以在任何安装了Docker的机器上运行,而不用关心底层操作系统,类似于船舶使用的集装箱.
Docker的应用场景
Docker的基本组成部分
Docker Client客户端
Docker客户端/守护进程
C/S架构
Docker客户端对服务器的访问,既可以本地,也可以远程
Docker Daemon守护进程
Docker Image镜像
镜像,容器的基石,就好比容器的源代码,保存了用于启动容器的各种条件.
是一种层叠的只读文件系统,最底端是一个引导文件系统:bootfs,系统启动后,bootfs会被卸载.第二层是root文件系统:rootfs,可以是一种或者多种操作系统,在传统的linux引导过程中,rootfs会最先以只读的方式加载,引导完成和完整性检查后才切换到读写模式,但是在Docker中,rootfs只能是只读模式,Docker应用联合加载技术(一次加载多个文件系统,但是在外面看来只能看到一个文件系统),又会在root文件系统之上加载更多的只读文件系统.
Docker Container容器
通过镜像启动,只读文件系统加载完成之后,Docker会在最顶部加载一个可写文件系统
>写时复制(copy on write):
Docker Registry仓库
类似于git的github
docker公司目前提供了dockerhub

Docker在线演示地址https://www.docker.com/tryit
Docker容器相关技术简介
Docker依赖的Linux内核特性
Namespaces命名空间
编程语言:封装>代码隔离
操作系统:系统资源的隔离(进程,网络,文件系统....)
linux系统命名空间的主要目的之一就是为了实现轻量级虚拟化服务,也就是我们所说的容器.
Docker目前使用了五种命名空间
- PID(Process ID) 进程隔离
- NET(Network) 管理网络接口
- IPC(InterProcess Communication) 管理跨进程通信的访问
- MNT(Mount) 管理挂载点
- UTS(Unix Timesharing System) 隔离内核和版本标识
control groups(cgroups)控制组
linux内核提供的一直可以记录,限制,隔离进程组所使用的物理资源的机制,最初是由google工程师提出,集成于Linux kernel 2.6.24@2007及以后的版本中
主要功能:
- 资源限制
- 优先级设定
- 资源计量
- 资源控制
这两个特性带给Docker容器的能力
- 文件系统隔离:每个容器都有自己的root文件系统
- 进程隔离:每个容器都运行在自己的进程环境中
- 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
- 资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给Docker容器
网友评论