挂卷管理
功能描述
普通容器仅支持在创建时指定—volume参数将宿主机的目录/卷挂载到容器实现资源共享,但是无法在容器运行时将挂载到容器中的目录/卷卸载掉,也不支持将宿主机的目录/卷挂载到容器。系统容器可以通过isulad-tools工具实现动态将宿主机的目录/卷挂载到容器,以及将容器中的目录/卷进行卸载。
命令格式
isulad-tools [COMMADN][OPTIONS] <container_id> [ARG...]
其中:
COMMAND:路由管理相关的命令。
OPTIONS:路由管理命令支持的选项。
container_id:容器id。
ARG:命令对应的参数。
接口说明
表 1
hostpath:containerpath:permission [hostpath:containerpath:permission …] |
|||
约束限制
- 挂载目录(add-path)的时候必须要指定绝对路径。
- 挂载目录(add-path)会在主机上生成/.sharedpath挂载点。
- 最多可以向单个容器中添加128个volume,超过128后无法添加成功。
- add-path不能将主机目录覆盖容器中的根目录目录(/),否则会造成功能影响。
使用示例
启动一个系统容器,指定hook spec为isulad hook执行配置脚本:
[root@localhost ~]# isula run -tid --hook-spec /etc/isulad-tools/hookspec.json --system-container --external-rootfs /root/root-fs none init
e45970a522d1ea0e9cfe382c2b868d92e7b6a55be1dd239947dda1ee55f3c7f7
isulad-tools将宿主机某个目录挂载到容器,实现资源共享:
[root@localhost ~]# isulad-tools add-path e45970a522d1 /home/test123:/home/test123
Add path (/home/test123) to container(e45970a522d1,/home/test123) done.
宿主机目录/home/test123创建一个文件,然后在容器内查看文件是否可以访问:
[root@localhost ~]# echo "hello world" > /home/test123/helloworld
[root@localhost ~]# isula exec e45970a522d1 bash
[root@localhost /]# cat /home/test123/helloworld
hello world
isulad-tools将挂载目录从容器内删除:
[root@localhost ~]# isulad-tools remove-path e45970a522d1 /home/test123:/home/test123
Remove path (/home/test123) from container(e45970a522d1,/home/test123) done
[root@localhost ~]# isula exec e45970a522d1 bash
[root@localhost /]# ls /home/test123/helloworld
ls: cannot access '/home/test123/helloworld': No such file or directory