docker - 使用 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 上运行的容器
解决方案
如果其他人偶然发现了这个问题,这就是我的做法
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
推荐阅读
- java - 使用 Firebase 检查整个 JSON 文件中是否存在数字
- azure-language-understanding - 无法根据 Luis 中的意图/话语识别实体
- google-apps-script - 使用 SpreadsheetApp.getActiveSheet() 的 Google 电子表格脚本,更改为在其他工作表中工作
- c# - 如何向 ASP.NET MVC user.Identity 添加更多用户数据
- r - 将 2D 水平面添加到 3D 绘图图表
- mysql - MySQL 社区版
- kubernetes - Kubernetes 和 Kafka(优点、缺点和主要区别)
- sql - 如何编写 sql 查询以输出格式化为包含本地货币符号并格式化为 5 位数字后跟两位小数的价格?
- telerik - 如何在 nativescript 中设置 radautocomplete 的初始值?
- mysql - MySQL:如何选择具有相同 ID 的最新行