Ansible和docker:本地构建映像被拉出并导致失败

时间:2015-07-16 16:17:27

标签: linux unix docker ansible

我正在使用Ansible为我的服务器配置使我的网站工作所需的任何东西。目标是安装一个基本系统并为其提供运行应用程序的docker容器(目前它只是一个应用程序)。

我面临的问题是我的docker镜像不是在dockerhub或其他东西托管的。相反,它是由Ansible任务构建的。但是,当我试图运行构建的图像时,Ansible试图拉动它(这是不可能的),然后就死了。

这就是剧本部分的样子:

<div class="header">
    
</div>

当我运行它时,失败表明svenv / svenv.nl从存储库中被拉出,它不存在,所以它崩溃了:

- 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

我的问题是:

我怎么能

  • 构建本地docker
  • 然后将其作为容器启动而不拉动它

1 个答案:

答案 0 :(得分:6)

您正在遇到此错误:

Ansible正在尝试创建一个容器,但创建失败了:

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

不幸的是,有一个全能except:隐藏了这个错误。结果是,ansible假定图像在本地丢失并试图拉动它,而不是使用上述消息失败。

您可以通过将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