本镜像提供了HashiCorp Nomad调度器的Docker化部署版本,旨在简化Nomad的快速部署与测试。主要用途包括:
镜像设计参考了HashiCorp***Dockerized Consul镜像的实现模式,基于djenriquez/nomad项目的基础进行开发。
/etc/nomad目录,或通过NOMAD_LOCAL_CONFIG环境变量直接注入配置内容host网络模式运行,确保Nomad正常通信/var/run/docker.sock以支持Docker任务驱动/tmp目录,满足Nomad默认临时文件需求(尤其在-dev模式下)NOMAD_DISABLE_PERM_MGMT环境变量privileged权限以支持各类任务驱动host网络模式与挂载卷功能/var/run/docker.sock(Docker任务驱动必需)/tmp(临时文件存储)/host/path/to/nomad/data)通过Docker Compose可快速启动开发环境,示例配置如下:
yamlversion: '2.1' services: nomad: image: multani/nomad command: agent -dev # 开发模式运行 privileged: true # 开发模式需特权权限 network_mode: host # 使用主机网络 environment: # 直接注入Nomad配置内容 NOMAD_LOCAL_CONFIG: | data_dir = "/nomad/data/" volumes: - /var/run/docker.sock:/var/run/docker.sock:rw # 挂载Docker socket - /tmp:/tmp # 共享临时目录
启动命令:
bashdocker-compose up
bashdocker run -d \ --name nomad-server \ --net host \ # 主机网络模式 --user nomad \ # 非root用户运行 -e NOMAD_DISABLE_PERM_MGMT=true \ # 禁用权限管理 -e NOMAD_LOCAL_CONFIG=' # 服务器配置内容 server { enabled = true bootstrap_expect = 3 # 期望的服务器节点数(集群启动需满足) } datacenter = "${REGION}" # 数据中心名称(需替换为实际值) region = "${DATACENTER}" # 区域名称(需替换为实际值) data_dir = "/nomad/data/" # 数据目录(容器内路径) bind_addr = "0.0.0.0" # 绑定所有网络接口 advertise { # 服务发现地址配置 http = "{{ GetPrivateIP }}:4646" # HTTP API端口 rpc = "{{ GetPrivateIP }}:4647" # RPC端口 serf = "{{ GetPrivateIP }}:4648" # Serf通信端口 } ' \ -v "nomad:/nomad/data:rw" # 数据卷挂载(持久化存储) multani/nomad agent # 启动Nomad代理
privileged权限以支持各类任务驱动bashdocker run -d \ --name nomad-client \ --net host \ # 主机网络模式 --privileged \ # 客户端需特权权限 -e NOMAD_LOCAL_CONFIG=' # 客户端配置内容 client { enabled = true # 启用客户端模式 } datacenter = "${REGION}" # 数据中心名称(需替换为实际值) region = "${DATACENTER}" # 区域名称(需替换为实际值) data_dir = "/nomad/data/" # 数据目录(容器内路径) bind_addr = "0.0.0.0" # 绑定所有网络接口 advertise { # 服务发现地址配置 http = "{{ GetPrivateIP }}:4646" # HTTP API端口 rpc = "{{ GetPrivateIP }}:4647" # RPC端口 serf = "{{ GetPrivateIP }}:4648" # Serf通信端口 } ' \ -v "/srv/nomad/data:/nomad/data:rw" \ # 数据目录挂载 -v "/var/run/docker.sock:/var/run/docker.sock" \ # Docker socket挂载 -v "/tmp:/tmp" \ # 临时目录挂载 multani/nomad agent # 启动Nomad代理
| 环境变量名 | 说明 | 取值示例 |
|---|---|---|
NOMAD_LOCAL_CONFIG | 直接注入Nomad配置内容,支持HCL/JSON格式 | data_dir = "/nomad/data/" |
NOMAD_DISABLE_PERM_MGMT | 非root用户运行时设置,禁用Nomad权限管理功能 | true |
NOMAD_DATA_DIR | 数据目录路径(需与挂载路径一致,用于模板文件路径映射) | /host/path/to/nomad/data |
| 配置项 | 说明 | 服务器模式 | 客户端模式 |
|---|---|---|---|
server.enabled | 是否启用服务器模式 | true | false |
client.enabled | 是否启用客户端模式 | false | true |
data_dir | 数据存储目录路径(需与容器挂载路径一致) | 必需 | 必需 |
bind_addr | 绑定地址,通常设为0.0.0.0以监听所有接口 | 必需 | 必需 |
advertise | 服务发现地址配置,包含HTTP/RPC/Serf端口 | 必需 | 必需 |
Nomad生成的模板文件路径依赖于data_dir配置,为确保宿主机Docker daemon能正确挂载这些路径,需满足以下条件:
路径一致性:容器内data_dir路径必须与宿主机挂载路径完全一致
示例:宿主机路径/host/nomad/data需挂载为容器内同路径,配置data_dir = "/host/nomad/data"
环境变量传递:通过NOMAD_DATA_DIR环境变量显式指定数据目录路径,确保配置与挂载同步:
bashexport NOMAD_DATA_DIR=/host/path/to/nomad/data docker run \ ... \ -v "$NOMAD_DATA_DIR:$NOMAD_DATA_DIR:rw" \ # 路径保持一致 -e "NOMAD_DATA_DIR=$NOMAD_DATA_DIR" \ # 传递环境变量 multani/nomad agent
chown -R 1000:1000 /host/path/to/nomad/data)# Nomad Docker镜像文档本镜像提供HashiCorp Nomad调度器的Docker化部署版本,主要用于测试环境及小型Nomad集群部署。镜像设计参考Hashicorp***Dockerized Consul镜像模型,基于djenriquez/nomad项目开发。
镜像需运行在主机网络模式下,支持灵活配置与非root用户运行,适合快速搭建Nomad测试环境或轻量级部署场景。
/etc/nomad目录,或使用NOMAD_LOCAL_CONFIG环境变量直接注入配置内容/var/run/docker.sock以启用Docker任务驱动/tmp目录存储临时文件,需从宿主机挂载host网络模式确保Nomad组件间通信正常NOMAD_DISABLE_PERM_MGMT环境变量可禁用权限管理,支持非root用户运行privileged标志以支持Docker、网络等任务驱动host网络模式与挂载卷功能/var/run/docker.sock(Docker任务驱动必需)/tmp(临时文件存储)/srv/nomad/data)适用于开发测试环境,一键启动Nomad开发模式:
yamlversion: '2.1' services: nomad: image: multani/nomad command: agent -dev # 开发模式运行 privileged: true # 开发模式需特权权限 network_mode: host # 使用主机网络 environment: NOMAD_LOCAL_CONFIG: | # 内联配置 data_dir = "/nomad/data/" volumes: - /var/run/docker.sock:/var/run/docker.sock:rw # Docker socket挂载 - /tmp:/tmp # 临时目录共享
启动命令:
bashdocker-compose up
NOMAD_DISABLE_PERM_MGMT=true)bashdocker run -d \ --name nomad-server \ --net host \ --user nomad \ # 非root用户运行 -e NOMAD_DISABLE_PERM_MGMT=true \ -e NOMAD_LOCAL_CONFIG=' server { enabled = true bootstrap_expect = 3 # 集群引导节点数 } datacenter = "dc1" region = "global" data_dir = "/nomad/data/" bind_addr = "0.0.0.0" advertise { http = "{{ GetPrivateIP }}:4646" rpc = "{{ GetPrivateIP }}:4647" serf = "{{ GetPrivateIP }}:4648" } ' \ -v "nomad-data:/nomad/data:rw" # 数据卷持久化 multani/nomad agent
privileged权限支持任务驱动bashdocker run -d \ --name nomad-client \ --net host \ --privileged \ # 客户端需特权权限 -e NOMAD_LOCAL_CONFIG=' client { enabled = true } datacenter = "dc1" region = "global" data_dir = "/nomad/data/" bind_addr = "0.0.0.0" advertise { http = "{{ GetPrivateIP }}:4646" rpc = "{{ GetPrivateIP }}:4647" serf = "{{ GetPrivateIP }}:4648" } ' \ -v "/srv/nomad/data:/nomad/data:rw" \ # 数据目录 -v "/var/run/docker.sock:/var/run/docker.sock" \ # Docker socket -v "/tmp:/tmp" \ # 临时目录 multani/nomad agent
| 环境变量名 | 说明 | 适用场景 |
|---|---|---|
NOMAD_LOCAL_CONFIG | 内联配置内容,支持HCL/JSON格式,优先级高于挂载文件 | 所有模式 |
NOMAD_DISABLE_PERM_MGMT | 禁用Nomad权限管理,非root用户运行时必需 | 服务器模式(非root运行) |
NOMAD_DATA_DIR | 数据目录路径(需与挂载路径一致,用于模板文件路径映射) | 所有模式 |
| 配置项 | 说明 | 服务器模式 | 客户端模式 |
|---|---|---|---|
server.enabled | 启用服务器模式 | true | false |
client.enabled | 启用客户端模式 | false | true |
data_dir | 数据存储目录(必须与容器挂载路径一致) | 必需 | 必需 |
bind_addr | 绑定地址,通常设为0.0.0.0 | 必需 | 必需 |
advertise | 服务发现地址配置,包含HTTP(4646)、RPC(4647)、Serf(4648)端口 | 必需 | 必需 |
bootstrap_expect | 集群引导期望节点数(服务器模式) | 集群初始化 | 不适用 |
Nomad模板文件路径依赖data_dir配置,为确保宿主机Docker daemon能正确挂载这些路径,需满足:
路径一致性:容器内data_dir路径必须与宿主机挂载路径完全相同
示例:宿主机路径/host/nomad/data需挂载为容器内同路径,配置data_dir = "/host/nomad/data"
环境变量传递:通过NOMAD_DATA_DIR显式指定路径,确保配置与挂载同步:
bashexport NOMAD_DATA_DIR=/host/nomad/data docker run \ ... \ -v "$NOMAD_DATA_DIR:$NOMAD_DATA_DIR:rw" \ -e "NOMAD_DATA_DIR=$NOMAD_DATA_DIR" \ multani/nomad agent
chown -R 1000:1000 /host/nomad/data)来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429