2015-07-16 2 views
1

Я использую Ansible для обеспечения моего сервера чем-либо, что необходимо для работы моего сайта. Цель состоит в том, чтобы установить базовую систему и предоставить ей докеры-контейнеры с приложениями (на данный момент это всего лишь одно приложение).Ansible and docker: локально построить изображение вытащить и вызвать сбой

Проблема, с которой я столкнулся, заключается в том, что мое изображение докеров не размещено на докер-хабе или что-то еще. Вместо этого он строится с помощью задачи Ansible. Однако, когда я пытаюсь запустить построенное изображение, Ansible пытается его вытащить (что невозможно), а затем умирает.

Это то, что секция выглядит как сборник пьес:

- name: check or build image 
    docker_image: 
    path=/srv/svenv.nl-docker 
    name='svenv/svenv.nl' 
    state=build 

- name: start svenv/svenv.nl container 
    docker: 
    name: svenv.nl 
    volumes: 
    - /srv/svenv.nl-docker/data/var/lib/mysql/:/var/lib/mysql/ 
    - /srv/svenv.nl-docker/data/svenv.nl/svenv/media:/svenv.nl/svenv/media 
    ports: 
    - 80:80 
    - 3306:3306 
    image: svenv/svenv.nl 

Когда я запускаю это, неудача указывает на то, что svenv/svenv.nl прибудете вытащил из хранилища, это не есть так он выходит из строя:

failed: [vps02.svenv.nl] => {"changes": ["{\"status\":\"Pulling repository svenv/svenv.nl\"}\r\n", "{\"errorDetail\":{\"message\":\"Error: image svenv/svenv.nl:latest not found\"},\"error\":\"Error: image svenv/svenv.nl:latest not found\"}\r\n"], "failed": true, "status": ""} 
msg: Unrecognized status from pull. 

FATAL: all hosts have already failed -- aborting 

Мой вопрос:

Как я могу

  • Построить локальную докер
  • Затем запустите его в качестве контейнера без потянув его
+0

Какую версию анзибль вы используете? Какая версия докера? Ваша пьеса отлично подходит для меня, как написано, предполагая, что я заменяю все пути именами, доступными локально. – larsks

+0

- доступная версия (на локальном компьютере): ansible 1.9.2 - версия докеры (на пульте дистанционного управления): версия докеров 1.7.1, сборка 786b29d –

+0

Хммм, я использую докер 1.6.0 локально. Позвольте мне посмотреть, что происходит с новой версией. – larsks

ответ

6

Вы ударяете эту ошибку:

анзибль пытается создать контейнер , но создается сбой:

docker.errors.InvalidVersion: mem_limit has been moved to host_config in API version 1.19 

К сожалению, во всем этом есть except:, который скрывает эту ошибку. Результатом является то, что вместо того, чтобы не сработав с вышеуказанным сообщением, возможно, что изображение просто отсутствует локально и пытается его вытащить.

Вы можете обойти эту проблему, установив docker_api_version на что-то раньше, чем 1,19:

- name: start svenv/svenv.nl container 
    docker: 
    name: svenv.nl 
    ports: 
    - 80:80 
    - 3306:3306 
    image: svenv/svenv.nl 
    docker_api_version: 1.18 
+0

Многие, большое спасибо. Это решило проблему для меня. Я уже возвращался к сценариям сценария репо-рейка с неприятными обходными решениями. Это очищает мой Ansible. Спасибо! –

+1

Рассмотрите возможность щелчка на галочке слева от этого ответа, чтобы отметить ее как принятую, что является как способом выражения благодарности, так и другими людьми, которые знают, что этот вопрос был рассмотрен. Похоже, есть исправление для этой проблемы, но оно не актуально; Я вижу, сколько усилий прилагается к приложению к текущему коду. – larsks

+1

Я только что помог слить [патч] (https://github.com/ansible/ansible-modules-core/pull/1744), который, похоже, исправил эту проблему. – larsks

Смежные вопросы