#docker #gitlab-ci-runner #yum #rhel #dnf
#docker #gitlab-ci-runner #вкуснятина #rhel #dnf
Вопрос:
У меня есть два разных серверных компьютера с размещенным gitlab-runner. Я использую одну в качестве версии для разработки, а другую — в качестве производственной версии. У меня одинаковая конфигурация на обеих машинах, поэтому последняя версия gitlab-runner и последняя версия Docker / docker-compose.
В мои файлы dockerfiles мне нужно загрузить пакет net-tools, чтобы использовать команду netstat. Builder docker является официальным образом OpenJDK 14 и основан на RHEL. Итак, для установки нового пакета я могу использовать только dnf / microdnf или yum.
Хорошо, все должно работать просто и понятно, как показано до сих пор. Но… когда машины пытаются выполнить команду:
RUN microdnf install net-tools
На промежуточной машине:
/bin/sh: microdnf: команда не найдена
Вместо этого на рабочей машине:
Задание выполнено успешно.
Хорошо, так что насчет yum? Давайте изменим установку net-tools в Dockerfile
RUN yum install net-tools -y
Конвейер запущен, задание запланировано и … промежуточная машина:
Задание выполнено успешно.
На рабочей машине, как вы можете понять:
/bin/sh: yum: команда не найдена
Я чувствую, что я немного в ловушке, потому что нет другого способа установить пакет (dnf должен быть другим возможным способом, но он не устанавливается на оба образа docker), и я не хочу применять обходной путь, который может «протестировать» установку через microdnf или yum.
Я надеюсь, что я максимально прояснил проблему.
Ответ №1:
Это неправильное решение, но, по крайней мере, оно работает. Я имею в виду, это просто обходной путь, который необходимо заменить как можно скорее.
Во всяком случае, в моих файлах docker, где я устанавливаю microdnf / yum… Я просто делаю оба, игнорируя ошибки. В Linux вы можете «переопределить» статус выхода, добавив ‘; exit (0)’ к вашей команде.
RUN yum install net-tools -y; exit 0
RUN microdnf install net-tools -y; exit 0
На обеих машинах добавление заключается в том, чтобы просто выполнить установки через yum и microdnf, и, конечно же, один из них успешно выполнит операцию; вместо этого другой завершится с «задушенной ошибкой».
Это обходное решение позволит вам преодолеть эту проблему действительно грубым способом, но, по крайней мере … это работает. «Задушенная ошибка» будет просто проигнорирована, и операция пройдет без сбоев.
Комментарии:
1. Вы когда-нибудь находили реальное решение? Я сталкиваюсь с той же проблемой с oraclelinux: 8-slim. Но у меня есть только microdnf, без yum.
2. На самом деле, я еще не сделал. Я покинул компанию, в которой я это делал …. материал, и у них все еще есть эта конфигурация. Я предлагаю вам попробовать разные менеджеры пакетов, чтобы найти правильный. У вас в кармане должны быть yum, dnf, microdnf и rpm. Я знаю, это то, что нарушает все лучшие практики, но … это работает.