为什么ansible继续用状态重新创建docker容器"开始"

时间:2015-11-18 14:58:58

标签: docker ansible

我有一个由Ansible管理的docker容器。每次我使用Ansible启动容器时,都会重新创建而不是刚刚启动。

以下是我用来停止/启动容器的Ansible命令:

ansible-playbook <playbook> -i <inventory> --extra-vars "state=stopped"
ansible-playbook <playbook> -i <inventory> --extra-vars "state=started"

这是我用来管理容器的Ansible。唯一的变化是&#34;停止&#34;并且&#34;开始&#34;命令是{{state}}。

- docker:
    name: "{{ postgres_container_name }}"
    image: "{{ postgres_image_name }}"
    state: "{{ state }}"
    ports:
      - "{{ postgres_host_port }}:{{ postgres_guest_port }}"
    env:
      POSTGRES_USER: "{{ postgres_user }}"
      POSTGRES_PASSWORD: "{{ postgres_password }}"
      POSTGRES_DB: "{{ postgres_db }}"

当我开始,停止并启动容器时,我从Ansible命令获得以下详细输出:

changed: [127.0.0.1] => {"ansible_facts": {"docker_containers": [{"Id": "ab1c0f6cc30de33aba31ce93671267783ba08a1294df40556870e66e8bf77b6d", "Warnings": null}]}, "changed": true, "containers": [{"Id": "ab1c0f6cc30de33aba31ce93671267783ba08a1294df40556870e66e8bf77b6d", "Warnings": null}], "msg": "removed 1 container, started 1 container, created 1 container.", "reload_reasons": null, "summary": {"created": 1, "killed": 0, "pulled": 0, "removed": 1, "restarted": 0, "started": 1, "stopped": 0}}

它声明容器已更改,已删除,已创建并已启动。

你能告诉我为什么Ansible看到我的容器变了,重新创建它而不是开始?

1 个答案:

答案 0 :(得分:2)

当您使用状态为started时,Ansible的docker模块将首先删除任何已停用的具有相同名称的容器。

module docs并没有真正说清楚,但有started function的源代码中有一条评论说明这​​一点。