Как запустить Docker-контейнер с облачным конфигурационным файлом для CoreOS?

Я пытаюсь настроить свой сервер CoreOS с помощью Terraform, используя файл облачной конфигурации для CoreOS. В настоящее время я пытаюсь настроить базу данных Mongo в контейнере Docker. Вот мой конфигурационный файл:

write_files:
  - path: "/home/core/keyfile"
  permissions: "0600"
  owner: "999"
  content: |
    hUoQVrERB0*** <here is my key for MongoDB>

coreos:
  units:
    - name: "dockerstart.service"
      command: "start"
      content: |
        [Unit]
        Description=Start
        Author=Me

        [Service]
        Restart=always
        ExecStart=/usr/bin/docker run --name mongo -v /home/core:/opt --add-host node1.example.com:127.0.0.1 -p 27017:27017 -d mongo:2.6.5 --smallfiles --keyFile /opt/keyfile --replSet "rs0"
        ExecStop=/usr/bin/docker rm -f mongo

Я не уверен, как использовать CoreOS units (когда я захожу на сервер, контейнер докера не запускается, поэтому файл конфигурации неверен). Согласно CoreOS Validator, мой файл действителен. Кроме того, я не уверен, является ли это самым простым способом развертывания сервера MongoDB. Как правильно использовать CoreOS units ? Любые мысли о том, как улучшить развертывание базы данных Mongo?

Любая помощь, комментарии, предложения приветствуются!

2 ответа

Решение

Я наконец нашел решение.

На самом деле работает docker run с -d Опция демонизирует команду. Так когда systemd обнаруживает, что это действие выполняется в фоновом режиме, он считает, что Docker дает сбой.

Вот journalctl -u dockerstart.service результат на сервере:

docker[1237]: ace3978442a729420ecb87af224bd146ec6ac7912c5cc452570735f4a3be3a79
docker[1297]: mongo
systemd[1]: dockerstart.service: Service hold-off time over, scheduling restart.
systemd[1]: Stopped Start.
systemd[1]: Started Start.

Здесь вы можете ясно увидеть, что systemd останавливает и перезапускает Start оказание услуг.

Таким образом, решение для этого может быть удаление -d из docker run командование

Если в будущем это поможет, вы можете использовать формат файла Container Linux Config для настройки начальной конфигурации для CoreOS: я опубликовал пример создания конфигурации зажигания на основе файла Container Linux Config, примененного к Terraform, в: https://github.com/joariasl/terraform-ansible-docker-swarm-coreos-aws/tree/feature/coreos-etcd

Об этом: https://coreos.com/os/docs/latest/provisioning.html

Другие вопросы по тегам