Docker 镜像是由多个文件系统叠加而成,当启动一个容器的时候,Docker会加载只读镜像层并在上面添加一个读写层。当删除Docker容器并通过该镜像重新启动时,之前的更改将会丢失。为了能够保存数据以及共享容器间的数据,Docker提出了 数据卷的概念。简单来说,数据卷就是目录或者文件,它可以绕过默认的联合文件系统,以正常的文件或者目录的形式存在于主机上。
在Docker 中,数据卷只是磁盘或另一容器中的目录。其生命周期不受管理,且 Docker现在提供的卷驱动程序功能非常有限。云容器引擎CCE采用的是Kubernetes 的数据卷的概念,Kubernetes数据卷具有明确的生命周期管理,支持多种类型的数据卷,同时实例可以使用任意数量的数据卷。
更多 Kubernetes 数据卷信息可见Volumes。
CCE支持挂载本地磁盘和云存储:
A、挂载本地磁盘:支持hostPath、emptyDir、configMap三种;
hostPath:指定主机中的文件或目录挂载到容器的某一路径中;
EmptyDir:用于临时存储,生命周期与容器实例相同。容器实例消亡时,EmptyDir会被删除,数据会永久丢失;
ConfigMap:将配置文件中的key映射到容器中,可以用于挂载配置文件到指定容器目录。
B、挂载云存储:类似Kubernetes的第三方存储插件,指定一块云硬盘挂载到容器的某一路径下,创建数据卷时廁对应的云硬盘即可;
“挂载本地磁盘”的操作步骤:
1、登录云容器引擎控制台,在创建应用过程中,在【添加容器】【选择镜像】【数据存储】【本地磁盘】;
2、卷类型选择hostPath,表示在容器上挂载宿主机上的文件或目录。通常用于:“容器应用程序生成的日志文件需要永久保存”或者“需要访问宿主机上Docker引擎内部数据结构的容器应用”;
配置参数:
参数 |
参数说明 |
本地磁盘名称 |
输入存储名称。 |
卷类型 |
选择卷类型为【hostPath】; 输入主机路径,如/tmp; 单击【挂载】,挂载对应的容器路径; |
挂载路径 |
数据卷挂载到容器上的路径。 注意:请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败。 |
权限 |
只读:只能读容器路径中的数据卷; 可写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失; |
3、卷类型选择emptyDir:容器分配到节点时系统将自动创建卷,初始内容为空。在同一个Pod中所有容器可以读写emptyDir中的相同文件。当Pod从节点上移除时,empryDir中的数据也会永久删除。通常用于临时数据的高速存储。
配置参数:
参数 |
参数说明 |
本地磁盘名称 |
输入存储名称。 |
卷类型 |
选择卷类型为【emptyDir】; 选择【存储介质】: − 默认:存储在硬盘上,适用于数据量大,读写效率要求低的场景。 − 内存:存储在内存中,适用于数据量少,读写效率要求高的场景。 单击【挂载】,挂载对应的容器路径; |
挂载路径 |
数据卷挂载到容器上的路径。 注意:请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败。 |
权限 |
只读:只能读容器路径中的数据卷。 可写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失。 |
4、卷类型选择configMap:平台提供应用代码和配置文件的分离,configMap用于处理应用配置参数。用户需要提前创建应用配置,操作步骤请参见《 创建应用配置项》;
配置参数:
参数 |
参数说明 |
本地磁盘名称 |
输入存储名称。 |
卷类型 |
选择卷类型为【configMap】; 选择对应的configMap名称; 说明:configMap需要提前创建,请参见《创建应用配置项创建configMap》。 单击【挂载】,挂载对应的容器路径; |
挂载路径 |
数据卷挂载到容器上的路径。 |
权限 |
可写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失。 |
“挂载云硬盘”的操作步骤:
1、登录云容器引擎控制台,在创建应用过程中,在【添加容器】【选择镜像】【数据存储】【云存储】页签中,单击【添加云存储】;
2、输入云存储参数配置:
参数 |
参数说明 |
云存储名称 |
输入存储名称。 |
类型 |
当前仅支持云硬盘。 云硬盘(EVS)的后端存储设备基于分布式架构,为云主机提供可弹性扩展的虚拟块存储设备。您通过管理控制台创建云硬盘并挂载给服务器,服务器可以为弹性云主机或者物理机,云硬盘的使用方式与传统服务器硬盘完全一致。同时,云硬盘具有更高的数据可靠性,更高的I/O吞吐能力和更加简单易用等特点,适用于文件系统、数据库或者其他需要块存储设备的系统软件或应用。 |
使用已有存储:选择已创建的存储,创建存储步骤请参见《存储管理》; 自动分配存储:自动创建存储,需要输入存储的容量; − sas:高IO,指由SAS存储介质构成的云硬盘。 − sata:普通IO,指由SATA存储介质构成的云硬盘。 − ssd:超高IO,指由SSD存储介质构成的云硬盘。 |
|
挂载路径 |
单击【挂载】,输入数据卷挂载到容器上的路径。 注意:请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败。 |
权限 |
只读:只能读容器路径中的数据卷。 可写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失。 |