Я создаю docker изображение, которое также включает в себя маленькое yum install
. В настоящее время я нахожусь в месте, где брандмауэр и контроль доступа делают docker pull
, yum install
и c чрезвычайно медленными.
В моем случае это изображение JRE8 docker с использованием этого официального сценарий изображения
Моя проблема:
Для создания образа требуется всего 2 библиотеки (gzip + tar), которые в совокупности составляют всего (132 кБ + 865 кБ) , Но скрипт yum внутри docker сначала загрузит информацию репо, размер которой превышает 80 МБ. Несмотря на то, что 80 МБ, как правило, мало, здесь для загрузки потребовалось более 1 часа. Если моим коллегам нужно строить, это будет пустой тратой продуктивного времени, не говоря уже о разочаровании.
Обходные пути, о которых я знаю:
- Поскольку этому изображению может не потребоваться полная мощность ням, я могу просто получить файлы * .rpm,
COPY
в скрипте контейнера и используйте rpm -i
вместо yum
- Я могу сохранить встроенное изображение и локально распределить
- Я также могу найти ближайшее зеркало для docker -hub, но не ням
Моя ставка:
- У меня есть копия linux CD с примерно такой же версией
- Я могу добавить команды в dockerfile, чтобы переименовать * .repo в * .repo.old
- Добавить cdrom.repo в /etc/yum.repos.d/ внутри контейнера
- Использовать yum загрузить наиболее распространенные библиотеки с CDROM вместо inte rnet
Моя проблема:
Я не могу разобрать, как создать точка монтирования на репозиторий cdrom изнутри сборки контейнера без использования httpd.
На простом linux Я делаю это:
mkdir /cdrom
mount /dev/cdrom /cdrom
cat > /etc/yum.repos.d/cdrom.repo <<EOF
[cdrom]
name=CDROM Repo
baseurl=file:///cdrom
enabled=1
gpgcheck=1
gpgkey=file:///cdrom/RPM-GPG-KEY-oracle
EOF
Любая помощь приветствуется.