Создание докеров с помощью Ansible docker_image

Я пытаюсь создать кучу докеров на машине, используя модуль Ansible docker_image.

Я создаю 1 «базовый» образ докера, который используется как образ FROM во всех последующих образах докеров. Это работает при выдаче команд сборки вручную как:

sudo docker build -t base .
sudo docker build -t postgres .

Но когда я пытаюсь сделать то же самое с модулем Ansible, второй образ (и все последующие образы, использующие «базовый» образ) завершается со следующей ошибкой:

TASK: [Docker | Build postgres] ************************************ 
failed: [192.168.1.120] => {"changed": true, "failed": true, "image_id": null}
msg: Error: Error: image base:latest not found
Log:Step 0 : FROM base


FATAL: all hosts have already failed -- aborting

Записи в моей Playbook:

  - name: Docker | Build base
      docker_image: path="/home/xx/data/dockers/base/" name="base" state=present

    - name: Docker | Build postgres
      docker_image: path="/home/xx/data/dockers/postgresql/" name="postgres" state=present

Когда это не удается, на машине существует «базовый» образ, и я могу проверить это, проверив docker images. Последующие образы (в данном случае postgres) также собираются в обязательном порядке при ручной сборке.

Соответствующие выдержки из Dockerfiles:

Базовый файл Docker:

FROM ubuntu

MAINTAINER me

RUN apt-get update

RUN apt-get install -y \
    software-properties-common \
    wget \
    git \
    unzip \
    nano \
    vim-tiny

CMD bash

Докерфайл Postgres:

FROM base

MAINTAINER me

RUN groupadd -r postgres && useradd -r -g postgres postgres

...

Таким образом, Ansible изо всех сил пытается создать образ, используя другой образ в качестве базового образа. Я уверен, что проблема не в файлах Docker, потому что я могу создавать образы вручную. Я просто пытаюсь автоматизировать сборку с помощью Ansible, и это вызывает у меня проблему.

Любой совет?


person jaco_vanderwalt    schedule 30.06.2015    source источник


Ответы (1)


Проблема здесь связана с модулем docker-py, в котором недавно было обновление, которое сначала будет проверять концентратор на наличие образа. docker-py не использует инструменты командной строки, он использует собственную реализацию docker api и делает все по-своему.

Я бы порекомендовал вам создать частный хаб. Вам понадобится полдня, чтобы привыкнуть к этой идее и начать добавлять префикс к изображениям контейнеров. Нажимайте, когда вы создаете свои изображения. Потяните, как вы запускаете их. Разделите эти проблемы в своих плейбуках. В некоторых случаях забудьте об использовании модулей ansible docker и просто вызовите docker cli через модуль оболочки ansible. Вот хорошая статья об ansible и docker. http://opensolitude.com/2015/05/26/building-docker-images-with-ansible.html

person Conrado    schedule 17.07.2015