Groovy或Java如何将映射内镜像名拼接为单行docker save命令参数
实现方案
Groovy 版本
直接通过集合操作批量拼接所有镜像参数,一次性执行导出命令即可:
// 收集所有镜像名并拼接为docker save可识别的参数格式 def imageParams = myMap.values().collect { "${it.keyword}:你需要的实际tag" }.join(' ') // 执行单次导出命令 sh "docker save ${imageParams} > docker.tar"
逻辑说明:
myMap.values()取出映射中所有的子条目,不需要关心外层的key是什么collect遍历每个子条目,取出keyword字段拼接你需要的tagjoin(' ')把所有带tag的镜像名用空格分隔,拼成完整的参数字符串- 全程不需要硬编码下标,后续新增镜像条目会自动被收集,完全适配任意数量的镜像。
Java 版本
逻辑和Groovy完全一致,用Stream流做集合处理即可:
import java.util.Map; import java.util.stream.Collectors; // 假设myMap的类型为 Map<String, Map<String, String>> String imageParams = myMap.values().stream() .map(item -> String.format("%s:你需要的实际tag", item.get("keyword"))) .collect(Collectors.joining(" ")); // 构造执行命令 String cmd = "docker save " + imageParams + " > docker.tar"; // 执行命令示例 Process process = new ProcessBuilder("sh", "-c", cmd) .inheritIO() .start(); process.waitFor();
内容的提问来源于stack exchange,提问作者croakPedlar
相关产品推荐
相关产品推荐

