Привет, укротитель контейнеров!
Знакомая боль: нужен один файл из Docker образа, но запускать контейнер не хочется. Docker почему-то не даёт простого решения. Рассказываю рабочий способ и показываю инструмент для анализа образов.
Извлекаем файл из образа
Скачиваем образ и создаём контейнер БЕЗ запуска:
# docker pull nginx:latest
# docker create --name nginx nginx:latest
Теперь копируем нужный файл:
# docker cp nginx:/docker-entrypoint.d/30-tune-worker-processes.sh ~/
Или выгружаем весь образ:
# docker export nginx -o ~/nginx-docker.tar.gz
Dive — рентген для образов
Утилита показывает слои образа и что в каждом слое изменилось. Запускаем прямо в Docker:
# docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock \
wagoodman/dive nginx:latest
Создаём alias для удобства:
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
Теперь просто:
# dive nginx:latest
Проверка раздутости образа
Вместо
docker build используй dive build — получишь анализ эффективности сборки:# dive build -t myapp:latest .
Dive покажет:
- Размер каждого слоя
- Что добавилось/удалилось
- Efficiency Score образа
- Wasted Space (лишнее место)
💡 Фишка: встрой проверку в CI/CD — автоматически отлавливай неоптимальные образы.
Итог: Docker создан для изоляции, поэтому прямого доступа к файлам нет. Но способы есть — используй их правильно.
____________________
Дополнительный материал:
🧠 - Linux Essentials: Понимание относительных и абсолютных путей к файлам
🧠 - Открытие Rancher: Путешествие от Стартапа до Лидера в Контейнеризации
🧠 - Осваиваем Docker: Искусство Сборки Образов и Управления Сетью
#Linux_Mastery #docker #devops #containers #optimization