Gitlab Runner:在其他机器上找不到microdnf / yum命令

问题描述

我有两台托管gitlab-runner的服务器。我将一个用作开发版本,将另一个用作生产版本。我在两台机器上都有相同的配置,因此最新版本的gitlab-runner和最新版本的Docker / docker-compose。

在我的dockerfile中,我需要下载net-tools软件包才能使用netstat命令。构建器docker是OpenJDK 14的正式映像,它基于RHEL。因此,为了安装新软件包,我只能使用dnf / microdnf或yum。


好的,到目前为止,一切都应该简单明了。但是...当机器尝试运行命令时:

RUN microdnf install net-tools

在登台计算机上:

/ bin / sh:microdnf:找不到命令

相反,在生产机器上:

工作成功。


好的,那么百胜呢?让我们更改Dockerfile的net-tools安装

RUN yum install net-tools -y

管道已启动,已安排作业并正在安装暂存机

工作成功。

在生产机器上,您可以看到:

/ bin / sh:yum:找不到命令


我觉得我有点被困,因为没有其他方法可以安装软件包(dnf应该是另一种可能的方法,但是不能同时安装在两个docker镜像上),并且我不想应用一种可以“测试”通过microdnf或yum安装。

我希望我已尽可能清楚地说明问题。

解决方法

这不是一个适当的解决方案,但至少可以奏效。我的意思是,这只是一种解决方法,必须尽快予以替换。

无论如何,在我的docker-files中,我安装了microdnf / yum ...我只是两者都做,忽略了错误。在Linux中,您可以“覆盖”退出状态,在命令后附加'; exit(0)'。

RUN yum install net-tools -y; exit 0
RUN microdnf install net-tools -y; exit 0

在两台机器上,什么追加只是通过yum和microdnf执行安装,当然,其中之一将成功执行该操作;相反,另一个将以“窒息错误”终止。

The good one

The bad one

此解决方法将使您能够以一种非常粗糙的方式解决此问题,但至少...可以。 “窒息的错误”将被忽略,操作不会崩溃。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...