Создать контейнер данных из другого образа докера

У меня есть образ докера, который составляет около 900 МБ, у него есть каталог /data где все данные, которые я хочу, а также /data/.git каталог, который я хотел бы исключить.

Я хотел бы создать контейнер данных (используя, например, изображение busybox) только с данными под /data исключая /data/.git каталог

Как мне сделать это наиболее эффективным способом?

/data исключая /data/.git только около 130 МБ

Таким образом, в основном у меня будет контейнер данных размером примерно от 130 до 200 МБ по сравнению с другим образом докера, размер которого составляет 900 МБ.

Спасибо

1 ответ

Решение

Я бы перешел на именованный том и создал его следующим образом:

docker run -it --rm -v data-vol:/target your_image \
  /bin/bash -c "cp -av /data/* /target"

cp -av /data/* /target будет игнорировать все файлы точек, поэтому вам может понадобиться добавить другие вручную, если у вас есть больше, чем просто ".git", например cp -av /data/* /data/.app-files /target

Если вы хотите сначала создать его с полной копией /data, а затем удалить папку.git, это еще проще:

docker run -it --rm -v data-vol:/data your_image rm -rf /data/.git

Пока "data-vol" не был инициализирован, он будет создан с полным / содержимым данных Docker. И затем первая команда, которую вы запускаете, - это очистить папку ".git".

Получив том "data-vol", вы можете использовать его в другом другом контейнере с помощью:

docker run -v data-vol:/data another_image
Другие вопросы по тегам