Docker学习——镜像、容器数据卷
镜像
什么是镜像
镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。
只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。
镜像是分层的。
联合文件系统
UnionFS(联合文件系统):
Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(类似于Java的object类,没有父镜像),可以制作各种具体的应用镜像。
镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。
Docker镜像层都是只读的,容器层是可写的
Docker镜像commit操作
· 提交容器副本使之成为一个新的镜像
docker commit
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
Docker容器数据卷
什么是卷
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统。卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
· 运行一个带有容器卷存储功能的容器实例
记得记得要加 --privileged=true
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
· 查看数据卷是否挂载成功
docker inspect 容器ID
卷的特点
1、数据卷可在容器之间共享或重用数据
2、卷中的更改可以直接实时生效
3、数据卷中的更改不会包含在镜像的更新中
4、数据卷的生命周期一直持续到没有容器使用它为止
5、容器和宿主机之间数据共享
1)docker修改,主机同步获得
2)主机修改,docker同步获得
3)docker容器stop,主机修改,docker容器重启数据依然同步。
读写规则映射添加
默认就是有读和写的权限 rw
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
只读权限 ro
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
卷的继承和共享
用 –volumes-from 父类 来继承
继承的是挂载路径和规则,父类没了也没关系,重启还是能够同步
docker run -it --privileged=true --volumes-from 父类 --name XX 镜像名