2015-06-30 32 views
1

我想在一臺機器上使用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 

在我的劇本中的條目是:

- 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 

當它失敗了「基地」在計算機上存在的圖像,我可以通過檢查驗證。後續圖像(在本例中爲postgres)在進行手動構建時也可以毫無失敗地構建。

從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鬥爭使用另一種圖像構建一個圖像作爲基礎圖像。我確定這個問題不在Dockerfiles中,因爲我可以手動構建這些圖像。我只是試圖用Ansible自動化構建,這就給了我這個問題。

有什麼建議嗎?

回答

2

這裏的問題是最近有一些更新的docker-py模塊將首先探測圖像集線器。 docker-py不使用命令行工具,它使用自己的docker api實現並以自己的方式執行任務。

我建議你設立一個私人中心。這將需要你一個下午習慣這個想法,並開始在你的容器圖像前加上它。在建立圖像時推送。拉起來,當你啓動它們。在你的劇本中分開這些問題。在某些情況下,忘記使用可靠的碼頭模塊,只需通過無線的外殼模塊來調用碼頭cli即可。這是一篇關於ansible和docker的好文章。 http://opensolitude.com/2015/05/26/building-docker-images-with-ansible.html