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

DAOS集群部署-Docker模式

1. 前言

本文详细介绍如何在almalinux8.9上使用docker部署DAOS.2.6.0单机集群,配置方式采用Metadata-on-SSD模式。系统环境如下:

daos:           2.6.0
linux os:       almalinux 8.9
linux kernel:   4.18.0-513.5.1.el8_9.x86_64

DAOS从2.0.0开始是一个全新的架构设计,与1.x版本是不兼容的。另外,从2.6.0开始,DAOS开始支持Metadata-on-SSD,即支持非Intel Optane设备。

 
 

2. 集群规划

Component       Host ip           Host name
--------------------------------------------
daos_server     192.168.3.13      node0

 
 

3. 安装docker

3.1. 添加docker yum源

编辑/etc/yum.repos.d/docker-ce.repo文件

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirror.nju.edu.cn/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirror.nju.edu.cn/docker-ce/linux/centos/gpg

3.2. 安装docker

dnf clean all && dnf makecachednf install --allowerasing docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.3. 启动docker

systemctl start docker.service

 
 

4. 拉取almalinux镜像

4.1. 设置docker hub镜像源

编辑/etc/docker/daemon.json文件

{"registry-mirrors": ["https://1ms.run"]
}

4.2. 拉取almalinux 8.9 init镜像

init镜像可以执行systemctl命令,省略了很多麻烦。

docker pull almalinux/8-init:8.9

如果成功拉取,执行docker images命令可以看到almalinux 8.9 init的docker image已经被加载:

REPOSITORY      TAG       IMAGE ID       CREATED         SIZE
almalinux/8-init   8.9       2f7f31164cc6   14 months ago   186MB

 
 

5. 制作daos-base镜像

5.1. 创建目录结构

mkdir -p /root/daos/daos-base/el8

5.2. 创建.env文件并添加内容

添加并编辑/root/daos/.env文件。

# Linux image配置
LINUX_DISTRO="el8"
LINUX_IMAGE_NAME="almalinux/8-init"
LINUX_IMAGE_TAG="8.9"# DAOS image build配置
DAOS_DOCKER_IMAGE_NSP="daos"
DAOS_DOCKER_IMAGE_TAG="2.6.0"
DAOS_HUGEPAGES_NBR=4096
DAOS_IFACE_NAME="enp0s8"
DAOS_IFACE_IP="192.168.3.13"

5.3. 创建Dockerfile并添加内容

添加并编辑/root/daos_docker/daos-base/el8/Dockerfile文件。

# Pull base image
ARG	LINUX_IMAGE_NAME=""
ARG	LINUX_IMAGE_TAG=""
FROM	$LINUX_IMAGE_NAME:$LINUX_IMAGE_TAG# Yum repo config
COPY yum.repos.d/* /etc/yum.repos.d/# Install packages
RUN dnf clean all &&                                                                         \dnf makecache &&                                                                         \echo "[INFO] Installing base packages" &&                                                \dnf install -y dnf-plugins-core &&                                                       \dnf config-manager --save --setopt=assumeyes=True &&                                     \dnf install vim &&                                                                       \dnf install procps-ng &&                                                                 \dnf install iproute &&                                                                   \echo "[INFO] Installing DAOS" &&                                                         \dnf install daos daos-admin daos-server daos-client &&                                   \dnf clean all &&                                                                         \echo "[INFO] Enable some services" &&                                                    \systemctl enable dbus.serviceENTRYPOINT [ "/sbin/init" ]
  • 上述COPY yum.repos.d/* /etc/yum.repos.d/指令,需要提前将yum.repos.d目录拷贝到宿主机Dockerfile同级目录下。yum.repos.d目录是提前做好的关于almalinux、daos、epel的国内镜像源。
  • ENTRYPOINT [ "/sbin/init" ]表示docker运行时默认执行/sbin/init命令,必须可少。

5.4. 创建docker-compose.yml并添加内容

添加并编辑/root/daos_docker/docker-compose.yml文件。

services:daos_base:image: "${DAOS_DOCKER_IMAGE_NSP}/daos-base-${LINUX_DISTRO}:${DAOS_DOCKER_IMAGE_TAG}"build:context: "daos-base/el8"args:- "LINUX_IMAGE_NAME=${LINUX_IMAGE_NAME}"- "LINUX_IMAGE_TAG=${LINUX_IMAGE_TAG}"privileged: truecgroup: hostvolumes:- type: bindread_only: truesource: /sys/fs/cgrouptarget: /sys/fs/cgroup- type: tmpfstarget: /run
  • privileged授予docker运行时拥有最高权限,否则无法运行systemctl命令。

5.5. 开始构建

docker-compose build daos_base

构建完成之后,使用docker images命令可以看到daos_base镜像已经加载了。

REPOSITORY           TAG       IMAGE ID       CREATED          SIZE                                                 
daos/daos-base-el8   2.6.0     7f90c7ca6c25   11 seconds ago   191MB
almalinux/8-init     8.9       2f7f31164cc6   14 months ago    186MB

5.6. 保存镜像(可以跳过)

如果需要在多台机器上部署DAOS集群,那么就需要将上述构建的daos base镜像导出到本地,然后在其他机器上加载该镜像即可。

docker save -o daos-base-image-2.6.0.tar daos/daos-base-el8:2.6.0

其他机器上只需要加载daos-base镜像,不需要加载almalinux镜像。加载镜像的命令如下:

docker load -i daos-base-image-2.6.0.tar

 
 

6. 启动daos-server容器

6.1. 编辑docker-compose.yml并添加内容

  daos_server:image: "${DAOS_DOCKER_IMAGE_NSP}/daos-base-${LINUX_DISTRO}:${DAOS_DOCKER_IMAGE_TAG}"container_name: daos-serverhostname: daos-serverprivileged: truecgroup: hostnetwork_mode: hostextra_hosts:- "daos-server:${DAOS_IFACE_IP}"volumes:- type: bindread_only: truesource: /sys/fs/cgrouptarget: /sys/fs/cgroup- type: bindread_only: falsesource: /dev/hugepagestarget: /dev/hugepages- type: bindread_only: falsesource: /sys/kernel/mm/hugepagestarget: /sys/kernel/mm/hugepages- type: bindread_only: falsesource: /lib/modulestarget: /lib/modules- type: bindread_only: falsesource: /sys/devices/system/nodetarget: /sys/devices/system/node- type: tmpfstarget: /run
  • image:指定依赖的镜像名,必须和daos_base中保持一致,目的是不需要重新再制作新的的镜像,因此上面配置也将build移除了。
  • network_mode:指定容器的网络模式,根据DAOS官网所说,目前只支持host模式,因此这里只能填写host
  • extra_hosts:用于配置docker的/etc/hosts文件。docker不支持在容器运行时修改hosts文件,因此必须在启动容器时配置。
  • volumes:用于挂载宿主机的目录到容器,任何一个都不能少。尤其是/lib/modules,这是spdk运行时需要用到的目录。

6.2. 创建并启动daos_server容器

docker compose up -d daos_server

执行docker ps -a命令查看daos-server容器是否正常运行

CONTAINER ID   IMAGE                      COMMAND        CREATED          STATUS                      PORTS     NAMES
17f0876cfeb3   daos/daos-base-el8:2.6.0   "/sbin/init"   30 minutes ago   Up 30 minutes                         daos-server

结果显示,STATUS:Up 17 seconds,daos-server容器已经正常启动。

 
 

7. 集群部署

单机集群部署可以参考DAOS集群部署-单机模式。

 
 

8. 参考资料

  • https://docs.daos.io/latest/QSG/docker/
  • https://github.com/daos-stack/daos/tree/v2.6.0/utils/docker

文章转载自:
http://cardiometer.bdypl.cn
http://analgetic.bdypl.cn
http://actomyosin.bdypl.cn
http://caster.bdypl.cn
http://aquamanile.bdypl.cn
http://chott.bdypl.cn
http://bamboozle.bdypl.cn
http://alogia.bdypl.cn
http://aerotherapeutics.bdypl.cn
http://anatomical.bdypl.cn
http://blissful.bdypl.cn
http://annaba.bdypl.cn
http://chlorodyne.bdypl.cn
http://arch.bdypl.cn
http://calcium.bdypl.cn
http://bauk.bdypl.cn
http://caffeine.bdypl.cn
http://adoptionist.bdypl.cn
http://arthurian.bdypl.cn
http://ascetically.bdypl.cn
http://aerarium.bdypl.cn
http://advisee.bdypl.cn
http://admiralship.bdypl.cn
http://bania.bdypl.cn
http://chlorometer.bdypl.cn
http://abherent.bdypl.cn
http://accordant.bdypl.cn
http://akkra.bdypl.cn
http://advisably.bdypl.cn
http://bower.bdypl.cn
http://www.dtcms.com/a/263012.html

相关文章:

  • CloudBase AI Toolkit 让我用“嘴”开发出的第一款网页游戏
  • 网络安全运维与攻防演练综合实训室解决方案
  • 服务器被入侵的常见迹象有哪些?
  • CentOS服务器SSH远程连接全指南
  • HarmonyOS NEXT应用元服务常见列表操作多类型列表项场景
  • 2025年数字信号、计算机通信与软件工程国际会议(DSCCSE 2025)
  • Excel 如何让表看起来更清晰、专业,而不是花里胡哨?
  • 低功耗MM32L0180系列MCU
  • 【Kafka】docker 中配置带 Kerberos 认证的 Kafka 环境(全过程)
  • [springboot系列] 探秘 JUnit 5:现代 Java 单元测试利器
  • Spring Boot 实现不同用户不同访问权限
  • 基于uniapp的老年皮肤健康管理微信小程序平台(源码+论文+部署+安装+售后)
  • 跨时间潜运动迁移以实现操作中的多帧预测
  • Instrct-GPT 强化学习奖励模型 Reward modeling 的训练过程原理实例化详解
  • nifi1.28.1集群部署详细记录
  • 大语言模型LLM在训练/推理时的padding
  • 用户行为序列建模(篇十一)-小结篇(篇一)
  • 如何读取运行jar中引用jar中的文件
  • C++ --- list
  • 《Effective Python》第十一章 性能——使用 timeit 微基准测试优化性能关键代码
  • 分发糖果
  • Spring Boot 集成 tess4j 实现图片识别文本
  • Springboot + vue + uni-app小程序web端全套家具商场
  • Serverless 架构入门与实战:AWS Lambda、Azure Functions、Cloudflare Workers 对比
  • 人工智能参与高考作文写作的实证研究
  • 华为物联网认证:开启万物互联的钥匙
  • 设计模式-观察者模式(发布订阅模式)
  • YOLOv12_ultralytics-8.3.145_2025_5_27部分代码阅读笔记-torch_utils.py
  • 现代JavaScript前端开发概念
  • spring-ai-alibaba官方 Playground 示例