用Ansible构buildDocker docker_image

我正在使用Ansible的docker_image模块在一台机器上构build一堆docker

我构build了1个“基础”泊坞窗图像,用作所有后续泊坞窗图像中的FROM图像。 这在手动发布构build命令时起作用:

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来validation它。 后续的图像(在这种情况下,postgres)也可以在进行手动构build时成功build立。

Dockerfiles相关摘录:

基础Dockerfile:

 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 Dockerfile:

 FROM base MAINTAINER me RUN groupadd -r postgres && useradd -r -g postgres postgres ... 

所以Ansible努力用另一幅图像作为基本图像来build立图像。 我相信这个问题不在Dockerfiles中,因为我可以手动构build图像。 我只是试图自动与Ansible构build,这是给我的问题。

有什么build议?

这里的问题是最近有一些更新的docker-py模块将首先探测映像的中心。 docker-py不使用命令行工具,它使用自己的docker api实现并以自己的方式执行任务。

我会build议你build立一个私人中心。 这将需要你一个下午习惯这个想法,并开始你的容器图像前缀。 推动你build立你的形象。 拉起来,当你启动它们。 分开你的剧本中的这些问题。 在某些情况下,忘记使用可靠的docker模块,只需通过可靠的shell模块来调用dockercli即可。 这是一个关于ansible和docker的好文章。 http://opensolitude.com/2015/05/26/building-docker-images-with-ansible.html

Interesting Posts