【注意】最后更新于 December 25, 2021,文中内容可能已过时,请谨慎使用。
nomad支持调度多种drive,比如docker,java,podman等,比较常用的是和docker的结合
要求版本 1.8.2和 1.9
一个简单的例子
1
2
3
4
5
6
7
8
|
task "webservice" {
driver = "docker"
config {
image = "redis:3.2"
}
}
|
使用私有镜像
1
2
3
4
5
6
7
8
9
10
|
task "test" {
driver = "docker"
config {
image = "私有镜像地址"
auth {
username = ""
password = ""
}
}
}
|
环境变量配置
一些镜像需要设置环境变量,在nomad可以使用env属性设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
task "es" {
driver = "docker"
env = {
"cluster.name" = "zjc-es-cluster"
"node.name" = "es7_01"
"bootstrap.memory_lock" = true
"ES_JAVA_OPTS" = "-Xms512m -Xmx512m"
"discovery.seed_hosts" = "localhost"
"cluster.initial_master_nodes"="es7_01"
}
config {
image = "docker.elastic.co/elasticsearch/elasticsearch:7.1.0"
ulimit {
memlock = "-1"
nofile = "65536"
nproc = "8192"
}
}
}
|
端口开放
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
group "web"{
network {
port "web" {
to = 80
}
}
service {
name = "web"
port="web"
}
task "test" {
driver = "docker"
config {
image = "nginx:latest"
ports = ["web"]
}
}
}
|
磁盘挂载
1
2
3
4
5
6
7
8
9
10
|
config {
volumes = [
# 使用绝对路径挂载
"/path/on/host:/path/in/container",
# 挂载到allocation dir下
"relative/to/task:/also/in/container"
]
}
|
镜像相关的配置
client属性可以配置docker相关的属性,常用的有volume和privileged
1
2
3
4
5
6
7
8
9
|
client {
enabled = true
options = {
"driver.allowlist" = "docker"
"docker.volumes.enabled" = true # 开启支持docker volumes
"docker.privileged.enabled" = true # 开启 privileged 模式
}
}
|
参考资料
Drivers: Docker | Nomad by HashiCorp