为限制Docker卷大小创建卷后,运行容器出现no such device报错
问题解决:Docker本地卷挂载报错no such device
报错原因
使用type=none创建local卷时,未指定o=bind选项,Docker无法识别这是绑定挂载操作,而是尝试以普通文件系统挂载逻辑处理,因此触发"no such device"错误。
修复步骤
- 删除已创建的错误卷:
docker volume rm KBndfoo4
- 重新创建卷,补充
--opt o=bind参数:
docker volume create --driver local \ --opt type=none \ --opt device=/Users/baominh/PycharmProjects/miha_cloud/source_code/admin/volume \ --opt o=bind \ KBndfoo4
- 再次执行原容器运行命令即可完成正常挂载。
实现卷大小限制
由于绑定挂载的卷大小依赖主机目录所在磁盘,需通过以下方式实现配额限制:
- 创建固定大小的稀疏镜像文件(示例为10G):
dd if=/dev/zero of=/Users/baominh/PycharmProjects/miha_cloud/source_code/admin/volume.img bs=1G count=0 seek=10
- 格式化镜像为文件系统(macOS需先安装
e2fsprogs,或使用hfs+格式):
mkfs.ext4 /Users/baominh/PycharmProjects/miha_cloud/source_code/admin/volume.img
- 将镜像挂载到指定的主机目录:
mount -o loop /Users/baominh/PycharmProjects/miha_cloud/source_code/admin/volume.img /Users/baominh/PycharmProjects/miha_cloud/source_code/admin/volume
- 之后按上述步骤创建卷并运行容器,容器内的
/uploads目录大小将被限制为10G。
内容的提问来源于stack exchange,提问作者BaoMinh.129
相关产品推荐
相关产品推荐

