Rancher容器目录持久化
最近一直在研究Rancher的持久化问题。
目前已找到两种方式实现Rancher里的容器文件实现持久化方法。
方法一:
配置映射(只适用单个文件,不适用于目录)
这个算不上是真正的持久化,只是相当于配置一个键值,然后键值内容等于文件内容,从而使得容器重启后,该文件内容会自动读取该键值内容,从而实现保持配置文件内容
(1)添加配置映射
(2)输入映射名称(可随意取,但是注意部分特殊字符无法使用),选中命名空间(建议选择zabbix-agent容器所在命名空间),配置映射键(输入需要保持的文件名字即可),输入值(直接复制zabbix_agentd.conf的内容)。点击确认
(3)配置升级容器。找到相应的容器,点击进入升级界面
下拉找到数据卷,做如下配置
升级该容器,可以发现以下配置内容不会丢失了。当需要修改该文件时,直接在配置映射那里修改对应的值即可
方法二:
映射主机目录:(同时使用于文件及目录)
(1)指定该容器运行主机
因为这种方式,相当于将容器内部的文件映射至宿主机,映射之后,宿主机对应的文件和文件夹会自动更新到容器内(PS:注意是,宿主机上的文件或文件夹覆盖容器内的)。如果不指定运行的主机,可能会导致,该容器升级之后,在另一台主机上运行,例如在192.168.68.233上运行,那么如果233上对应的文件夹是空的,将会使得容器内部对应的文件夹也会被清空,甚至会直接导致容器无法起来,因为它的文件被233上的文件夹覆盖清空
对应容器点击进入升级,找到主机调度部分,做以下配置
(2)将容器内的文件和文件夹复制到宿主机
以下命令在宿主机上执行
[root@localhost zhao]# docker cp ec66a6aa7b44:/etc/mongod.conf /zhao/etc/mongod.conf #将容器内部文件映射至宿主机本地,ec66a6aa7b44为容器id invalid output path: directory "/zhao/etc" does not exist #建议都提前创建好对应目录 [root@localhost zhao]# mkdir -p /zhao/etc [root@localhost zhao]# docker cp ec66a6aa7b44:/etc/mongod.conf /zhao/etc/mongod.conf [root@localhost zhao]# ls db etc test [root@localhost zhao]# cd etc/ [root@localhost etc]# ls #可以看到宿主机本地也有了该容器内部的文件 mongod.conf
(3)配置映射主机目录
对应容器点击进入升级,找到数据卷部分,做以下配置。以将mongodb容器的配置文件映射到宿主机持久化为例。映射目录也是一样的方式
确认升级,即可完成文件或目录的映射持久化