首页 > 解决方案 > 使用 ansible 停止基于公共端口的 docker 容器

问题描述

我正在尝试创建一个可以停止在特定端口上运行的 docker 容器的 ansible-playbook。

从我在网上找到的内容看来,我们可以使用所有容器

  tasks:
 - name: Get running containers
   docker_host_info:
    containers: yes
   register: docker_info

并停止容器使用

 - name: Stop running containers
   docker_container:
    name: "<container on port 8080>"
    state: stopped

但是如何停止在端口 8080 上运行的容器

标签: dockeransible

解决方案


如果其他人偶然发现了这个问题,这就是我的做法

tasks:
 - name: Get docker Info
   docker_host_info:
    containers: yes
   register: docker_info

 - name: Stop the container running on port 8080
   docker_container:
    name: "{{ docker_info | dict2items | json_query('[?key==`containers`].value[] | [?Ports[?PublicPort==`8080`]] | [0].Id') }}"
    state: stopped

推荐阅读