使用 Ansible 构建 Docker docker_image
Building Dockers with Ansible docker_image
我正在尝试使用 Ansible 的 docker_image 模块在一台机器上构建一堆 docker。
我构建了 1 个 "base" docker 图像,它被用作所有后续 dockers 图像中的 FROM 图像。这在手动发出构建命令时有效:
sudo docker build -t base .
sudo docker build -t postgres .
但是当我尝试对 Ansible 模块执行相同操作时,第二个图像(以及使用 "base" 图像的所有后续图像)失败并出现以下错误:
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
当它失败时,机器上存在 "base" 图像,我可以通过检查 docker images
来验证它。后续图像(在本例中为 postgres)在进行手动构建时也不会失败。
Dockerfile 的相关摘录:
基础 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 努力使用另一个图像作为基础图像来构建图像。我确定问题不在于 Dockerfile,因为我可以手动构建图像。我只是想用 Ansible 自动构建,这给了我问题。
有什么建议吗?
此处的问题与 docker-py
模块有关,该模块最近进行了一些更新,该模块将首先探测图像中心。 docker-py
不使用命令行工具,它使用自己的 docker api 实现并以自己的方式做事。
我建议您设置一个专用集线器。您将需要一个下午的时间来适应这个想法,并开始为您的容器镜像添加前缀。在构建映像时推送。启动时拉动它们。在您的剧本中将这些问题分开。在某些情况下,忘记使用 ansible docker 模块,只需通过 ansible 的 shell 模块调用 docker cli。这是一篇关于 ansible 和 docker 的好文章。 http://opensolitude.com/2015/05/26/building-docker-images-with-ansible.html
我正在尝试使用 Ansible 的 docker_image 模块在一台机器上构建一堆 docker。
我构建了 1 个 "base" docker 图像,它被用作所有后续 dockers 图像中的 FROM 图像。这在手动发出构建命令时有效:
sudo docker build -t base .
sudo docker build -t postgres .
但是当我尝试对 Ansible 模块执行相同操作时,第二个图像(以及使用 "base" 图像的所有后续图像)失败并出现以下错误:
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
当它失败时,机器上存在 "base" 图像,我可以通过检查 docker images
来验证它。后续图像(在本例中为 postgres)在进行手动构建时也不会失败。
Dockerfile 的相关摘录:
基础 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 努力使用另一个图像作为基础图像来构建图像。我确定问题不在于 Dockerfile,因为我可以手动构建图像。我只是想用 Ansible 自动构建,这给了我问题。
有什么建议吗?
此处的问题与 docker-py
模块有关,该模块最近进行了一些更新,该模块将首先探测图像中心。 docker-py
不使用命令行工具,它使用自己的 docker api 实现并以自己的方式做事。
我建议您设置一个专用集线器。您将需要一个下午的时间来适应这个想法,并开始为您的容器镜像添加前缀。在构建映像时推送。启动时拉动它们。在您的剧本中将这些问题分开。在某些情况下,忘记使用 ansible docker 模块,只需通过 ansible 的 shell 模块调用 docker cli。这是一篇关于 ansible 和 docker 的好文章。 http://opensolitude.com/2015/05/26/building-docker-images-with-ansible.html