У меня есть образ докера размером около 900 МБ , в нем есть каталог / data
, где находятся все нужные мне данные, а также /data/.git
, который я хотел бы исключить.
Я хочу создать контейнер данных (например, используя изображение busybox) только с данными в папке / data
, за исключением / data / .git
каталог
Как мне сделать это наиболее эффективным способом?
/ data
за исключением /data/.git
составляет всего около 130 МБ
Таким образом, в основном у меня будет контейнер данных размером примерно от 130 до 200 МБ по сравнению с другой образ докера размером 900 МБ
Спасибо
Я бы перешел на именованный том и создал его следующим образом:
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'ом с полным содержимым /data. А затем первая выполняемая команда - очистить папку ".git".
После того, как у вас есть том "data-vol", вы можете повторно использовать его в другом контейнере с:
docker run -v data-vol:/data another_image