【问题标题】:Nomad to deploy a container with a fileNomad 使用文件部署容器
【发布时间】:2022-06-16 05:16:25
【问题描述】:

我对 Nomad 很陌生,我正在寻找一个包含特定文件的 docker 容器。我知道 Nomad 内置了一个 docker 驱动程序,所以这是否是正确的操作: 1. 创建一个 dockerfile 复制我想要的文件 2. 使用从该 dockerfile 构建的图像在 Nomad 中使用(在 config{ } 块?

或者,通过查看类似的问题,例如here,我会在 args 变量中放入 docker cp file.yml 命令以将文件复制到容器中

如果容器与文件一起成功部署,我还想知道在哪里实际看到容器?我可以输入 docker 容器列表吗?

【问题讨论】:

  • 你能用你的文件创建一个 docker 镜像吗?将其发布到 repo,然后您可以轻松地使用 nomad 运行它。

标签: docker nomad


【解决方案1】:

这是我从 nomad 网站的监控部分获取的示例:

1- 在这个例子中,我尝试使用 docker 映像安装 prometheus prom/prometheus:latest 并在 docker 镜像中复制文件 webserver_alert.yml

2- 将下面的代码复制粘贴到 visual studio code 中以查看线条

3- 在 第 20 行,我们在 nomad 中创建了文件 webserver_alert.yml 文件系统

4-从第22行到第91行yml文件的内容

5- 我们要求 nomad 在 docker 中挂载 local/webserver_alert.yml 文件系统 /etc/prometheus/webserver_alert.yml 在启动时 码头工人

job "prometheus" {
  datacenters = ["dc1"]
  type = "service"

  group "monitoring" {
    count = 1
    restart {
      attempts = 2
      interval = "30m"
      delay = "15s"
      mode = "fail"
    }
    ephemeral_disk {
      size = 300
    }

    task "prometheus" {
      template {
        change_mode = "noop"
        destination = "local/webserver_alert.yml"
        data = <<EOH
---
groups:
- name: prometheus_alerts
  rules:
  - alert: Webserver down
    expr: absent(up{job="webserver"})
    for: 10s
    labels:
      severity: critical
    annotations:
      description: "Our webserver is down."

EOH
      }

      template {
        change_mode = "noop"
        destination = "local/prometheus.yml"
        data = <<EOH
---
global:
  scrape_interval:     5s
  evaluation_interval: 5s

alerting:
  alertmanagers:
  - consul_sd_configs:
    - server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
      services: ['alertmanager']

rule_files:
  - "webserver_alert.yml"

scrape_configs:

  - job_name: 'alertmanager'

    consul_sd_configs:
    - server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
      services: ['alertmanager']

  - job_name: 'nomad_metrics'

    consul_sd_configs:
    - server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
      services: ['nomad-client', 'nomad']

    relabel_configs:
    - source_labels: ['__meta_consul_tags']
      regex: '(.*)http(.*)'
      action: keep

    scrape_interval: 5s
    metrics_path: /v1/metrics
    params:
      format: ['prometheus']

  - job_name: 'webserver'

    consul_sd_configs:
    - server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
      services: ['webserver']

    metrics_path: /metrics

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['167.86.106.9:9100','167.86.106.9:9107']

EOH
      }
      driver = "docker"
      config {
        image = "prom/prometheus:latest"
        volumes = [
          "local/webserver_alert.yml:/etc/prometheus/webserver_alert.yml",
          "local/prometheus.yml:/etc/prometheus/prometheus.yml"
        ]
        port_map {
          prometheus_ui = 9090
        }
      }
      resources {
        network {
          mbits = 10
          port "prometheus_ui" {}
        }
      }
      service {
        name = "prometheus"
        tags = ["urlprefix-/"]
        port = "prometheus_ui"
        check {
          name     = "prometheus_ui port alive"
          type     = "http"
          path     = "/-/healthy"
          interval = "10s"
          timeout  = "2s"
        }
      }
    }
  }
}

如果其他人有#nomad - #consul - #vault 或 hashstack 问题标记我 stackoverflow

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2021-11-24
    相关资源
    最近更新 更多