Ansible w / Docker-显示当前容器状态

Sha*_*ili 5 ansible docker docker-compose ansible-template

我正在做一个Ansible小项目,我在其中使用Docker容器。

我的问题简短:

我想获取正在运行的Dockercontainer的状态!

我的意思是,我想获取容器的当前状态,Docker通过使用“ docker ps”命令向您显示。

例如:

  1. 已退出
  2. 重新开始

我想从特定的容器中获得这些结果之一。但是无需使用CommandShell 模块

韩国

Dav*_*son 7

从Ansible 2.8开始,您可以使用docker_container_info,从本质上返回以下输入docker inspect <container>

- name: Get infos on container
  docker_container_info:
    name: my_container
  register: result

- name: Does container exist?
  debug:
    msg: "The container {{ 'exists' if result.exists else 'does not exist' }}"

- name: Print the status of the container
  debug:
    msg: "The container status is {{ result.docker_container['State']['Status'] }}"
  when: result.exists
Run Code Online (Sandbox Code Playgroud)

在我的Docker版本中,State包含以下内容:

"State": {
    "Status": "running",
    "Running": true,
    "Paused": false,
    "Restarting": false,
    "OOMKilled": false,
    "Dead": false,
    "Pid": 8235,
    "ExitCode": 0,
    "Error": "",
    "StartedAt": "2019-01-25T14:10:08.3206714Z",
    "FinishedAt": "0001-01-01T00:00:00Z"
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参见https://docs.ansible.com/ansible/devel/modules/docker_container_info_module.html

  • 在 Ansible 2.8 的开发过程中,`docker_container_facts` 已重命名为 `docker_container_info`。文档现在可在 https://docs.ansible.com/ansible/devel/modules/docker_container_info_module.html 获得 (2认同)

KVS*_*KVS 6

不幸的是,docker 周围的模块目前都不能“列出容器”。我做了以下工作来获取状态:

- name: get container status
  shell: docker ps -a -f name={{ container }} --format {%raw%}"table {{.Status}}"{%endraw%} | awk 'FNR == 2 {print}' | awk '{print $1}'
  register: status
Run Code Online (Sandbox Code Playgroud)

结果将在状态变量中可用