解决docker WARNING: Usage of loopback devices is strongly discouraged for production use的正确姿势
centos的系统,安装docker后,如果没有修改一些设置,启动docker daemon后,如果在xfs 或者ext4的文件系统上,命令行输入docker info命令下,常会看到如下一条警告信息 大意是用loopback的方式运行docker是强烈不建议的,后面也告诉了解决这个警告的办法,网上搜索的一些解决办法,大意也是docker daemon启动参数加入 DOCK
centos的系统,安装docker后,如果没有修改一些设置,启动docker daemon后,如果在xfs 或者ext4的文件系统上,命令行输入docker info命令下,常会看到如下一条警告信息
大意是用loopback的方式运行docker是强烈不建议的,后面也告诉了解决这个警告的办法,网上搜索的一些解决办法,大意也是docker daemon启动参数加入 DOCKER_STORAGE_OPTIONS="--storage-opt dm.no_warn_on_loop_devices=true"来规避警告。而实际这样无异于掩耳盗铃,从加入的参数的意思也能看出如此。事实上,根本的解决办法,要从docker 的不同的存储驱动说起。
目前docker支持的存储驱动类型,有aufs,Device mapper,btrfs,overlayfs和zfs,所有驱动都用到写时复制(CoW)的技术。而出现警告的原因,就是在centos系统上(默认不支持aufs),docker daemon启动时,找到的后端存储驱动只有device mapper类型,就会通过loopback的方式,创造100G的sparse文件,并将其作为device mapper的存储池,而所有容器都从该存储池中分配默认10G的存储空间使用(可以理解为通过dd命令创造一个稀疏文件,再把这个稀疏的文件当做块设备通过loopback挂载出来)。而loopback的方式,性能和稳定性都不是很好,所以才出现上述警告。因此解决的办法,也在使用device mapper存储时,避免使用loopback即可。
在docker daemon启动时,加入--storage-opt dm.datadev=/dev/xxxx --storage-opt dm.metadatadev=/dev/xxx ,为device mapper的元数据存储和docker的镜像数据存储选择独立的块设备即可,lvm或者独立磁盘分区都可以。
参考:
1、
Docker五种存储驱动原理及应用场景和性能测试对比 http://dockone.io/article/1513?utm_source=tuicool&utm_medium=referral
更多推荐
所有评论(0)