/ / Ansible et docker: une image de construction locale est extraite et provoque un échec - linux, unix, docker, ansible

Ansible et docker: une image de construction locale est extraite et provoque un échec - linux, unix, docker, ansible

J'utilise Ansible pour approvisionner mon serveur avectout ce qui est nécessaire pour que mon site fonctionne. L’objectif est d’installer un système de base et de lui fournir des conteneurs Docker exécutant des applications (pour l’instant, ce n’est qu’une application).

Le problème auquel je suis confronté est que mon image de menu fixeCe n'est pas hébergé chez dockerhub ou quelque chose d'autre. Au lieu de cela, il est construit par une tâche Ansible. Cependant, lorsque j'essaie d'exécuter l'image construite, Ansible essaie de la tirer (ce qui n'est pas possible), puis meurt.

Voici à quoi ressemble la section Playbook:

- 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

Lorsque je lance ceci, un échec indique que le fichier svenv / svenv.nl est extrait du référentiel, il n’est pas là, il se bloque:

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

FATAL: all hosts have already failed -- aborting

Ma question est:

Comment puis-je

  • Construire un docker local
  • Puis lancez-le comme un conteneur sans le tirer

Réponses:

6 pour la réponse № 1

Vous frappez cette erreur:

Ansible tente de créer un conteneur, mais la création échoue avec:

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

Malheureusement, il y a un fourre-tout except: c'est cacher cette erreur. Le résultat est que plutôt que d'échouer avec le message ci-dessus, ansible suppose que l'image manque tout simplement localement et tente de l'extraire.

Vous pouvez contourner ce problème en définissant docker_api_version à quelque chose plus tôt que 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