为什么ansible不断重新创build状态为“已启动”的docker集装箱

我有一个由Ansiblepipe理的docker集装箱。 每次我用Ansible启动容器时,都会重新创build,而不是刚刚启动。

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

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

这里是我用来pipe理容器的Ansible。 “停止”和“开始”命令之间的唯一变化是{{状态}}。

 - 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}} 

它指出,容器改变,被删除,创build和启动。

你能告诉我为什么Ansible看到我的容器改变了,重新创build而不是启动?

Ansible的docker模块将首先移除所有与已started状态一致的名称相同的已停止容器。

模块文件并没有真正清楚,但在started函数的源代码中有一个解释这个的注释。