gpt4 book ai didi

linux - Ansible 和 docker : locally build image get pulled and causes failure

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:55 25 4
gpt4 key购买 nike

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

我面临的问题是我的 docker 镜像没有托管在 dockerhub 或其他地方。相反,它是由 Ansible 任务构建的。但是,当我尝试运行构建的镜像时,Ansible 会尝试拉取它(这是不可能的)然后死掉。

这是剧本部分的样子:

- 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

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

failed: [vps02.svenv.nl] => {"changes": ["{\"status\":\"Pulling repository svenv/svenv.nl\"}\r\n", "{\"errorDetail\":{\"message\":\"Error: image svenv/svenv.nl:latest not found\"},\"error\":\"Error: image svenv/svenv.nl:latest not found\"}\r\n"], "failed": true, "status": ""}
msg: Unrecognized status from pull.

FATAL: all hosts have already failed -- aborting

我的问题是:

我怎么能

  • 构建本地 docker
  • 然后作为容器启动,不拉取

最佳答案

你遇到了这个错误:

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

关于linux - Ansible 和 docker : locally build image get pulled and causes failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31459513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com