1.1 存储机制
每个镜像由多个镜像层组成,镜像层都是只读的,从下往上,以栈方式组合在一起,组成容器的根文件系统。镜像文件默认保存在主机的/var/lib/docker/volumes中。
容器层是可读写层。每个容器运行时都有自己的容器层,保存容器运行相关的数据,容器层之下的所有镜像都是只读的,多个容器可以共享一个镜像。容器层是保存在/var/lib/docker/containers路径。每次新建容器时,只需要为每个容器新建一个可写的数据层,而不用复制所有的镜像层。
容器层和镜像层都保存在宿主机的文件系统中,通过Docker存储驱动来管理。
1.2 数据卷和存储驱动
容器使用数据卷保证数据持久性,删除容器时候,所有不在数据卷中的数据都会被删除。因为数据卷是主机上的一个文件或者目录,不受存储驱动程序管理。
Docker设计了一套存储驱动插件框架,开发者可以基于此套标准,设计开发自己的存储驱动。
可以使用docker info查看当前存储驱动。
使用哪种存储驱动取决于用户在宿主机上使用何种文件系统。有些存储驱动可以工作在不同的后端文件系统上。
可以在启动Docker使用使用--storage-driver来指定。
Docker中每种存储驱动都是基于Linux文件系统或卷管理工具的。
1.3 定制Docker Daemon
因为Docker Daemon有七八十个启动选项,根据应用场景定制Docker运行环境就显得非常有必要。
在命令行中输入dockerd即可启动,就是默认的方式启动Daemon了。
如果开启debug模式,可以执行
#dockerd -D
仓库相关配置:
--disable-legacy-registry选项,可以选择不从旧版本的镜像仓库中下载镜像。因为Docker从1.6版本后,支持从V2版本的镜像仓库下载镜像。
使用镜像仓库,使用参数—registry-mirror选项。
此外,还有何网络配置相关的等等。
因为,旧版本docker的配置文件默认的在 /etc/default/docker ,现在已不推荐。
变量的使用查看/lib/systemd/system/docker.service
可以参考官方指南: