INDEX
- §1 Docker 是什么
- §2 架构
- §2.1 官网图
- §2.2 架构图
- §2.3 UnionFS(联合文件系统)
- §3 安装
- §3.1 前提
- §3.2 安装
- §3.3 启动
- §3.4 卸载
- §4 镜像加速器
§1 Docker 是什么
- docker 是环境的容器
- 允许应用连同它的依赖、环境等一起打包,并且可以将这个包放到其他环境上继续启动运行
- 类似以前 windows 的 ghost 镜像,但这个镜像是专为跑应用而准备的,所以自带这个应用所需的环境、配置、依赖
与虚拟机的区别如下图所示,相比于
- docker 不需要虚拟硬件和操作系统,而是直接使用硬件资源
- docker 是应用和环境的打包,虚拟机还需要加上一个虚拟操作系统内核
§2 架构
§2.1 官网图
镜像、容器实例、仓库
仓库 类似于 github,是存放镜像的地方
仓库和 maven 仓库一样有公有和私有仓库之分
最大的公有仓库是 hub.docker.com
国内最常用的仓库是阿里云
仓库里存放的都是镜像
镜像 是对应用和其依赖、环境等配属物的容器
镜像相当于一个模板,这个模板是一个文件
镜像通常可以包含一个完整的文件系统
镜像可以分层构建,并且不包含任何动态数据
容器实例 是镜像的一个运行进程
镜像运行后得到一个容器实例,所有容器都是通过镜像创建的
一个镜像可以同时运行处多个容器实例
§2.2 架构图
rootfs
是一套精简的 linux 文件系统,docker 镜像的运行也是基于 linux 的,只不过是基于简化版 linux
docker container
docker 容器
libcontainer(?)
docker 的 rootfs 只是一套精简的 linux 文件系统,若容器需要linux的一些特性则通常需要依赖 libcontainer
docker 通过 libcontainer 从 rootfs 上区分出不同的容器
docker registry
docker 仓库
docker client
docker 客户端,通常用来发出指令
docker daemon
docker 的守护进程,运行在主机上
包括两个部分
- docker server
用于接受客户端的指令并进行 job 的调用 - docker engine
用于实际处理 docker job 的地方,若 job 执行过程中需要,会自动与仓库进行通信
docker driver
驱动,包括网络驱动、图形驱动等
§2.3 UnionFS(联合文件系统)
docker 镜像的文件系统是分层的,在下载镜像时可以看到相关现象
这是 docker 的 UnionFS,联合文件系统,以下是 UnionFS 自底而上的组成
- bootfs
- bootloader
最先加载,用于加载 kernel - kernel
成功加载后,接过内存使用权并加载 rootfs
- rootfs
不同操作系统发行版的文件系统,相当于 centos 等
rootfs 通常也作为基础镜像(base image)存在 - 镜像层
镜像层可以包括多个层次,按依赖关系顺次罗列,
比如 jdk、mysql、app
每追加一层,这一层之下的镜像都做完父镜像存在 - 容器层
通过镜像启动容器时,docker 会在最顶层添加一个可写的文件系统
容器层以下,都是只读的
§3 安装
docker 的获取和安装可以参考 官网
§3.1 前提
linux 系统要求
- CentOs 7 以上
- 系统版本 64 位
- linux 内核 3.8 以上
通过下面指令查看
cat /etc/redhat-release
uname -r
卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装 gcc
yum -y install gcc
yum -y install gcc-c++
§3.2 安装
安装 yum-utils
yum install -y yum-utils
添加 stable 仓库
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
刷新 yum 缓存(可选)
yum clean all
yum makecache fast
yum update
安装 docker
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
如果安装失败,重新刷新 yum 缓存
§3.3 启动
启动 docker 服务
systemctl start docker
运行 hello world 验证启动
docker run hello-world
查看 docker 进程
ps -ef |grep docker
查看 docker 版本
docker version
§3.4 卸载
停止 docker 服务
system stop docker
从 yum 卸载
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
删除 docker 的镜像、容器、卷和用户配置
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
§4 镜像加速器
获取加速器地址,以阿里云为例
使用加速器地址,以阿里云为例
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://2mkskfi4.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker