Docker提取镜像默认配置文件

相关概念:Docker

有些镜像启动后会自带一套默认配置,直接手写容易漏项。更稳妥的方式是:

先启动一个临时容器,再把容器内的默认配置复制出来。

这样适合做两件事:

  • 作为本地定制的起点
  • 对照镜像升级前后的默认配置差异

Nginx

#!/usr/bin/env bash
set -e
 
IMAGE="nginx:1.29-alpine"
TMP_CONTAINER="temp_nginx"
 
mkdir -p ./etc/nginx
mkdir -p ./html
 
docker run -d --rm --name ${TMP_CONTAINER} ${IMAGE}
 
docker cp ${TMP_CONTAINER}:/etc/nginx/nginx.conf ./etc/nginx/
docker cp ${TMP_CONTAINER}:/etc/nginx/conf.d ./etc/nginx/
docker cp ${TMP_CONTAINER}:/etc/nginx/mime.types ./etc/nginx/
docker cp ${TMP_CONTAINER}:/usr/share/nginx/html/. ./html/
 
docker stop ${TMP_CONTAINER}

MySQL

docker run -d --rm --name=temp_mysql mysql:8.0
sleep 20
docker cp temp_mysql:/etc/mysql/ ./etc
docker stop temp_mysql

适用边界

这种做法适合“把默认配置拿出来研究或改造”,不适合长期依赖临时容器本身。

最终仍然应该把真正使用的配置收敛到自己的目录结构里。