目录
第 8 章 Prometheus+Grafana监控Docker主机
第 9 章 基于Docker构建企业Jenkins CI平台
第 1 章 Docker核心概念与安装
- 为什么要用容器?
- Docker是什么
- Docker设计目标
- Docker基本组成
- 容器 vs 虚拟机
- Docker应用场景
- Linux 安装 Docker
为什么使用容器?
1. 上线流程繁琐
开发->测试->申请资源->审批->部署->测试等环节
2. 资源利用率低
普遍服务器利用率低,造成过多浪费
3. 扩容/缩容不及时
业务高峰期扩容流程繁琐,上线不及时
4. 服务器环境臃肿
服务器越来越臃肿,对维护、迁移带来困难
5. 环境不一致性
Docker是什么
- 使用最广泛的开源容器引擎
- 一种操作系统级的虚拟化技术
- 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
- 一个简单的应用程序打包工具
Docker设计目标
- 提供简单的应用程序打包工具
- 开发人员和运维人员职责逻辑分离
- 多环境保持一致性
Docker基本组成
容器 vs 虚拟机
Docker应用场景
- 应用程序打包和发布
- 应用程序隔离
- 持续集成
- 部署微服务
- 快速搭建测试环境
- 提供PaaS产品(平台即服务)
Linux 安装 Docker
Docker版本:
- 社区版(Community Edition,CE)
- 企业版(Enterprise Edition,EE)
支持平台:
- Linux(CentOS,Debian,Fedora,Oracle Linux,RHEL,SUSE和Ubuntu)
- Mac
- Windows
# 安装依赖包
yum install -y yum-utils
# 添加Docker软件包源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker CE
yum install -y docker-ce
# 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
https://docs.docker.com/engine/install/centos/
官方文档:https://docs.docker.com
阿里云源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第 2 章 Docker镜像管理
- 什么是镜像
- 镜像从哪里来?
- 镜像与容器联系
- 镜像常用管理命令
- 镜像存储核心技术:联合文件系统(UnionFS)
- 镜像存储核心技术:写时复制(COW)
镜像是什么
镜像是什么?
•
一个分层存储的文件,不是一个单一的文件
•
一个软件的环境
•
一个镜像可以创建N个容器
•
一种标准化的交付
•
一个不包含Linux内核而又精简的Linux操作系统
镜像从哪里来?
Docker Hub是由Docker公司负责维护的公共镜像仓库,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。
地址:https://hub.docker.com
配置镜像加速器:
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
镜像与容器联系
镜像:类似于虚拟机镜像,一个只读模板
容器:通过镜像创建的运行实例
![](https://i-blog.csdnimg.cn/blog_migrate/283a35b338f1edd648b37e0e9e7012bf.png)
镜像常用管理命令
镜像存储核心技术:联合文件系统(UnionFS)
镜像怎么高效存储?
难道像虚拟机那样一个容器对应一个独立的镜像文件?这样对于密集
型容器,磁盘占用率太大!
答:引入联合文件系统,将镜像多层文件联合挂载到容器文件系统
镜像存储核心技术:写时复制(COW)
了解联合文件系统后,我们知道,镜像是只读的,类似共享形式让多
个容器使用,如果要在容器里修改文件,即镜像里的文件,那该怎么
办呢?
答:引入写时复制(copy-on-write),需要修改文件操作时,会先
从镜像里把要写的文件复制到自己的文件系统中进行修改。
![](https://i-blog.csdnimg.cn/blog_migrate/33bf50431eb4f9fc4dbd56078a6825dd.png)
优化建议
- 使用SSD固态硬盘
- 使用卷作为频繁读写文件的工作目录,绕过存储驱动,减少抽象的开销
第 3 章 Docker容器管理
- 创建容器常用选项
- 容器资源限制
- 管理容器常用命令
- 容器实现核心技术:Namespace
- 容器实现核心技术:CGroups
- Docker核心组件之间关系
创建容器常用选项
容器资源限制
示例:
内存限额:
允许容器最多使用500M内存和100M的Swap,并禁用 OOM Killer:
docker run -d --name nginx03 --memory="500m" --memory-swap=“600m" --oom-kill-d