docker - docker stack deploy,restart_policy,删除退出的容器
问题描述
如何摆脱 docker swarm 中状态为“已退出”的容器?
docker stack deploy -c ./test.yml 测试
version: '3.3'
services:
test-serv:
image: redbom/test:latest
user: "root"
deploy:
restart_policy:
condition: any
delay: 1s
image:redbom/test:latest - 是带有 bash sh 的测试图像:
#!/bin/bash
echo 'sllep 8'
sleep 8
exit 0
10分钟后:docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b7d26ca8382c redbom/test:latest "docker-php-entrypoi…" 4 seconds ago Up 2 seconds test_test-serv.1.5k0esbhtx0k6m7kmcuo5w3obs
0a7415032fa2 redbom/test:latest "docker-php-entrypoi…" 14 seconds ago Exited (0) 3 seconds ago test_test-serv.1.tq2fif5r0pny18ee248kisw6z
337cb3b7f1e1 redbom/test:latest "docker-php-entrypoi…" 23 seconds ago Exited (0) 13 seconds ago test_test-serv.1.hzdyhk9202le9oh9senuw38l3
21e06ac40795 redbom/test:latest "docker-php-entrypoi…" 33 seconds ago Exited (0) 23 seconds ago test_test-serv.1.i4poxgv4zfwrzl3ag25b5rco4
af85c618ba7d redbom/test:latest "docker-php-entrypoi…" 43 seconds ago Exited (0) 33 seconds ago test_test-serv.1.b1jzxq2t2lb9e0tl5hqvzxr4t
如何配置test.yml,使状态为Exited的容器不存在?我想要,那个 docker stack 在它自己之后删除 Exited 容器。我不需要它们。
解决方案
您看到的是任务历史保留限制的结果,默认为 5。您可以将保留限制设置为docker swarm update --task-history-limit ${int}
(确保将 ${int} 替换为整数)。我发现将值设置为 2 在清理退出的容器和仍然能够回滚失败的堆栈部署之间提供了一个很好的平衡。
不过,由于您不需要任务历史记录,请将其设置为 0。这应该会清除所有退出的容器(不过,不确定这是否适用于更改之前部署的服务)。
推荐阅读
- python - 根据数据框中组内的条件替换值
- javascript - 响应式 D3.js 折线图
- postgresql - 数据仓库 - 维度表的唯一约束,这样的设计可能吗?
- c# - 使用 Streamwriter 时使用构造函数的正确方法
- r - R package dplyr 重新安装每个实例
- vba - 访问 如何在用户名和密码中硬编码
- kdb - 如何将函数应用于 kdb 中的每一列?
- asp.net-core - Redis 和 Elasticsearch Healthcheck 在 Kubernetes asp.net 核心应用程序上失败
- python - 从熊猫数据框中提取匹配数据另一个列到列表中
- java - 在 ByteBuffer 中存储 JSON 有效负载无法打印大括号或冒号