当前位置: 首页 > news >正文

在docker容器中安装docker服务,基于fuse-overlayfs进行overlay挂载,而不是vfs

1、docker 安装

正常安装docker软件,运行docker时,会提示:No docker socket 服务

2、启动docker服务(包含守护进程)

systemctl start docker
#dockerd &if ! ps aux | grep -v grep | grep -q "dockerd"; thenecho "Starting dockerd in background..."nohup dockerd > /dev/null 2>&1 &export DOCKER_DAEMON_STARTED_BY_BASHRC=1  # 标记由本脚本启动
elseecho "dockerd is already running."
fi

现在可以运行了,但是发现运行在vfs模式,非常占用IO,需要更换成overlay模型

docker info | grep "Storage Driver" 可确认当前存储驱动是否为 vfs。若输出为 Storage Driver: vfs,则说明 Docker 未使用 overlay2。

3、容器内需要安装overlay模组

我的思路是直接apt安装,发现不行。然后我把宿主机的 /lib/modules/5.4.0-* 复制到容器中。通过这个可查看内核版本$(uname -r)
加载模块

depmod -amodprobe overlaylsmod | grep overlay

4、这个时候还是无法dockerd启动overlay,还是用fuse-overlayfs

内核态搞不了就换成用户态的overlay,到https://github.com/containers/fuse-overlayfs的release页面下载二进制bin文件。然后复制到容器的/bin目录

检查模块是否加载:

lsmod | grep overlay  # 或 modinfo overlayfuse-overlayfs --version

这个时候我这边启动dockerd已经ok

最后在容器的 .bashrc 添加脚本,确保每次都能启动docker服务

systemctl start docker
#dockerd &if ! ps aux | grep -v grep | grep -q "dockerd"; thenecho "Starting dockerd in background..."modprobe overlaylsmod | grep overlaynohup dockerd > /dev/null 2>&1 &export DOCKER_DAEMON_STARTED_BY_BASHRC=1  # 标记由本脚本启动
elseecho "dockerd is already running."
fi

相关文章:

  • 【数据挖掘】关联规则算法学习—Apriori
  • 华为云Flexus+DeepSeek征文|基于Dify构建故事绘本制作工作流
  • 分布式ID生成SnowflakeId雪花算法和百度UidGenerator工具类
  • 鸿蒙版FlutterSDK3.27.4可以使用了
  • [论文阅读] 人工智能 | 真实场景下 RAG 系统的工程实践指南
  • 数据结构之顺序表(C语言版本)
  • PHP在做爬虫时的解决方案
  • 跨芯片 AI 算子库 FlagGems 正式加入PyTorch 基金会生态项目体系
  • idea的EasyCode插件连接瀚高数据库(APP)
  • 基于Anaconda环境开发IntelliJ IDEA实用JSON转Java实体插件
  • ASM1042在矿山设备通信中的抗干扰性能优化研究
  • JavaEE-Spring事务和事务的传播机制
  • SpringMVC系列(四)(请求处理的十个实验(下))
  • LabVIEW疲劳试验机模糊PID
  • 人工智能-基础篇-3-什么是深度学习?(DL,卷积神经网络CNN,循环神经网络RNN,Transformer等)
  • 华为云Flexus+DeepSeek征文|高可用部署 Dify 平台构建 Flux 绘画中台 Chatflow 的设计与实现
  • Android11 wifi开启源码分析
  • SQl中多使用EXISTS导致多查出了一条不符合条件的数据
  • 设计模式之房产中介——代理模式
  • redisTemplate简单实现幂等性校验