一.Docker简介 1.什么是容器?
容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。
与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何的专门
的解释系统
2.什么是docker? (1)docker是能够把应用自动部署到容器的开源引擎,是一种操作系统级别的虚拟化方案 (2)只能运行相同或相似内核的操作系统 (3)依赖Linux内核特性:Namespace和Cgroups(Control Group)
3.Docker的目标 提供简单轻量的建模方式 职责的逻辑分离 快速高效的开发生命周期 鼓励使用面向服务的架构(docker鼓励单个容器只运行一个服务) 符合高内聚,低耦合,单一任务的目标
4.Docker 的使用场景 1.使用Docker容器开发,测试,部署服务 2.创建隔离的运行环境 3.搭建测试环境 4.构建多用户的平台即服务(PaaS)基础设施 5.提供软件即服务(SaaS)应用程序 6.高性能,超大规模的宿主机部署
二 Dockers的基本组成
1.Docker客户端 和Docker daemon C/S架构 2.Docker Image 镜像 Docker Image 是采用了分层联合系统(aufs, Advanced union File System),
关于 AUFS 的几个特点:
AUFS 是一种联合文件系统,它把若干目录按照顺序和权限 mount 为一个目录并呈现出来默认情况下,只有第一层(第一个目录)是可写的,其余层是只读的。增加文件:默认情况下,新增的文件都会被放在最上面的可写层中。删除文件:因为底下各层都是只读的,当需要删除这些层中的文件时,AUFS 使用 whiteout 机制,它的实现是通过在上层的可写的目录下建立对应的whiteout隐藏文件来实现的。修改文件:AUFS 利用其 CoW (copy-on-write)特性来修改只读层中的文件。AUFS 工作在文件层面,因此,只要有对只读层中的文件做修改,不管修改数据的量的多少,在第一次修改时,文件都会被拷贝到可写层然后再被修改。节省空间:AUFS 的 CoW 特性能够允许在多个容器之间共享分层,从而减少物理空间占用。查找文件:AUFS 的查找性能在层数非常多时会出现下降,层数越多,查找性能越低,因此,在制作 Docker 镜像时要注意层数不要太多。性能:AUFS 的 CoW 特性在写入大型文件时第一次会出现延迟。.... add Apache add emacs rootfs(ubuntu) bootfs
3.Docker Container 容器 通过镜像启动 启动和执行阶段 写时复制(copy on write)
4.Docker Registry 仓库 公有 私有 Docker Hub
三 Docker容器相关技术简介 依赖linux内核的Namespace特性 Namespace 命令空间 编程语言 封装 -->代码隔离 操作系统 进程,网络,文件系统等系统资源的隔离
Docker的五种命令空间 PID(Process ID) 实现进程隔离 NET(Network) 实现网络隔离 IPC(Interprocess Communication) 实现跨进程通信的访问 MNT(Mount) 挂载点,实现文件系统的隔离 UTS(Unix Timesharing System) 实现隔离内核和版本标识
Contorl Group 资源限制 优先级设定 资源计量 资源控制
四 Docker的安装
检查ubuntu版本 uname -a 14.04以上均支持docker ll /sys/class/misc/device-mapper 检查存储驱动
安装ubuntu维护的版本 sudo apt-get install docker.io source /etc/bash_completion.d/docker.io
使用非root运行docker sudo groupadd docker sudo gpasswd -a ${USER} docker sudo service docker restart
五 容器的基本操作 启动容器 docker run IMAGE [COMMAND] [ARG...]
查看容器 docker ps -a -l docker inspect name/id
自定义容器名 docker run --name=自定义名 -i -t IMAGE /bin/bash
重启启动已停止的容器 docker start [-i] 容器名 docker stop 容器名
删除已经停止的容器 docker rm 容器名/ID