我有一个由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看到我的容器变了,重新创建它而不是开始?
答案 0 :(得分:2)
当您使用状态为started
时,Ansible的docker模块将首先删除任何已停用的具有相同名称的容器。
module docs并没有真正说清楚,但有started
function的源代码中有一条评论说明这一点。