【docker】根据docker inspect获取启动参数

背景

服务器里起了好些服务,但启动脚本已经丢失了,怎样通过运行中的容器反推启动脚本呢?
启动脚本:环境变量,端口映射什么的

通过 docker inspect

通过 docker inspect 可以拿到一些信息,但信息确实很多,并且几十个服务,总不能一个一个去查,怎么办,
当然是写脚本,
但写脚本之前,先找一下,通过一个容器的 docker inspect 信息,怎样快速把 env 信息捞出来呢?

一个 docker inspect 的示例:

[
    {
       ...
        "State": {
            "Status": "running",
        ...
        "Config": {
            ...
            "StdinOnce": false,
            "Env": [
                "spring.cloud.inetutils.preferred-networks=10.1.12.14",
            ],
           ...
    }
]

获取 env 参数

docker inspect --format "{{range .Config.Env}}{{println .}}{{end}}" "$container" >> "$output_file"

获取容器端口映射

docker port "$container"

融合到一个脚本里面

#!/bin/bash

# 定义存储结果的文件路径
output_file="/tmp/docker.txt"

# 清空文件内容
> "$output_file"

# 遍历容器列表
containers=$(docker ps --format "{{.Names}}")
for container in $containers; do
  echo "Container: $container" >> "$output_file"
  
  # 获取容器的启动参数
  echo "  Start Command:" >> "$output_file"
  docker inspect --format "{{range .Config.Env}}{{println .}}{{end}}" "$container" >> "$output_file"
 
  # 取容器的端口映射信息
  echo "  Port Mapping:" >> "$output_file"
  docker port "$container" >> "$output_file"

  echo "" >> "$output_file"
done

echo "输出完成,请查看 $output_file 文件。"
posted @ 2023-12-12 17:53  aaacarrot  阅读(44)  评论(0编辑  收藏  举报