Docker镜像是由多个文件系统叠加而成,当启动一个容器的时候,Docker会加载只读镜像层并在上面添加一个读写层。当删除Docker容器并通过该镜像重新启动时,之前的更改将会丢失。为了能够保存数据以及共享容器间的数据,Docker提出了数据卷的概念。简单来说,数据卷就是目录或者文件,它可以绕过默认的联合文件系统,以正常的文件或者目录的形式存在于主机上。
在Docker中,数据卷只是磁盘或另一容器中的目录。其生命周期不受管理,且Docker现在提供的卷驱动程序功能非常有限。容器引擎CCE采用的是Kubernetes的数据卷的概念,Kubernetes数据卷具有完善的生命周期管理,支持多种类型的数据卷,同时实例可以使用任意数量的数据卷。
云容器引擎支持四类本地磁盘挂载类型:支持hostPath、emptyDir、configMap、secret。各类型说明如下:
hostPath:指定主机中的文件或目录挂载到容器的某一路径中;
EmptyDir:用于临时存储,生命周期与容器实例相同。容器实例消亡时,EmptyDir会被删除, 数据会永久丢失;
ConfigMap:将配置文件中的key映射到容器中,可以用于挂载配置文件到指定容器目录;
Secret:将密钥中的数据挂载到指定的容器路径。
1.在创建应用或升级应用流程中,进去容器设置步骤,点击【数据存储】,点击【添加本地磁盘】,进入本地磁盘添加页面;
1)卷类型选择hostPath,表示在容器上挂载宿主机上的文件或目录。通常用于“容器应用程序生成的日志文件需要永久保存”或者“需要访问宿主机上Docker引擎内部数据结构的容器应用”,具体参数说明如下所示:
参数 | 参数说明 |
存储类型 | 选择主机路径 |
主机路径 | 输入主机路径,如/tmp |
挂载路径 | 数据卷挂载到容器上的路径 注意: 请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败 |
子路径 | 相对路径 |
权限 | 只读:只能读容器路径中的数据卷; 读写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失; |
2)卷类型选择emptyDir:容器分配到节点时系统将自动创建卷,初始内容为空。在同一个Pod中所有容器可以读写emptyDir中的相同文件。当Pod从节点上移除时,empryDir中的数据也会永久删除。通常用于临时数据的高速存储,具体参数说明如下所示:
参数 | 参数说明 |
存储类型 | 选择临时路径 |
磁盘介质 | 不勾选:存储在硬盘上,适用于数据量大,读写效率要求低的场景 勾选:存储在内存中,适用于数据量少,读写效率要求高的场景 |
挂载路径 | 数据卷挂载到容器上的路径。 注意:请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败 |
权限 | 只读:只能读容器路径中的数据卷 可写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失 |
3)卷类型选择configMap:平台提供应用代码和配置文件的分离,configMap用于处理应用配置参数。用户需要提前创建应用配置,操作步骤请参见创建配置项,临时数据的高速存储,具体参数说明如下所示:
参数 | 参数说明 |
存储类型 | 选择配置项 |
配置项 | 选择已经建立好的配置项 说明:configMap需要提前创建 |
挂载路径 | 数据卷挂载到容器上的路径 |
权限 | 只读:只能读容器路径中的数据卷 |
4)卷类型选择secret:用户需要提前创建私密凭据,操作步骤请参见创建私密凭据,临时数据的高速存储,具体参数说明如下所示:
参数 | 参数说明 |
存储类型 | 选择私密凭据 |
卷类型 | 选择已经创建好的私密凭据 说明:secret需要提前创建,请参见 创建私密凭据 |
挂载路径 | 数据卷挂载到容器上的路径 |
权限 | 只读:只能读容器路径中的数据卷 |
2.点击【添加容器挂载】,可新增挂载项,点击【删除】可删除之前的容器挂载配置;
3.点击【确定】,完成本地磁盘的添加。