Skip to content
This repository has been archived by the owner on Jul 1, 2020. It is now read-only.

djenriquez/nomad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Dockerized Nomad

This repo produces a dockerized version of Nomad following Hashicorp's model for their Dockerized Consul image found here: https://github.com/hashicorp/docker-Consul

This image is meant to be run with host network privileges. It can use preconfigured Nomad hcl files by mounting those config to /etc/nomad.

To run:

Server:

docker run -d \
--name nomad \
--net host \
-e NOMAD_LOCAL_CONFIG='{ "server": {
        "enabled": true,
        "bootstrap_expect": 3
    },
    "datacenter": "${DATACENTER}",
    "region": "${REGION}",
    "data_dir": "/nomad/data/",
    "bind_addr": "0.0.0.0",
    "advertise": {
        "http": "${IPV4}:4646",
        "rpc": "${IPV4}:4647",
        "serf": "${IPV4}:4648"
    },
    "enable_debug": true }' \
-v "/opt/nomad:/opt/nomad" \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-v "/tmp:/tmp" \
djenriquez/nomad:v0.6.0 agent

Client:

docker run -d \
--name nomad \
--net host \
-e NOMAD_LOCAL_CONFIG='{ "client": {
        "enabled": true
    },
    "datacenter": "${DATACENTER}",
    "region": "${REGION}",
    "data_dir": "/nomad/data/",
    "bind_addr": "0.0.0.0",
    "advertise": {
        "http": "${IPV4}:4646",
        "rpc": "${IPV4}:4647",
        "serf": "${IPV4}:4648"
    },
    "enable_debug": true }' \
-v "/opt/nomad:/opt/nomad" \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-v "/tmp:/tmp" \
djenriquez/nomad:v0.6.0 agent

The above command is identical to running this example in Nomad's documentation for bootstrapping with Consul.

Correctly configuring Nomad data directory

Due to the way Nomad exposed template files it generates, you need to take special precautions when configuring its data directory.

In case you are running Docker containers and using the template stanza, the Nomad data_dir has to be configured with the exact same path as the host path, so the host Docker daemon mounts the correct paths, as exported by the Nomad client, into the scheduled Docker containers.

You can run the Nomad container with the following options in this case:

export 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 \
djenriquez/nomad:latest agent