使用ansible停止基于公共端口的docker容器

问题描述 投票:0回答:2

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

从我在网上找到的内容来看,我们似乎可以使用

获取所有容器
  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 上运行的容器

docker ansible
2个回答
0
投票

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

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

0
投票

我坚持使用 killport 软件包,只需运行

killport 80
命令之类的命令,它将停止任何将此端口暴露给 host 的容器(不是在某些 docker 网络内部)。

© www.soinside.com 2019 - 2024. All rights reserved.