【DockerFile】解密失败的解决方案:揭秘Process “/bin/sh -c yum install openssl“的报错

【DockerFile】解密失败的解决方案:揭秘Process "/bin/sh -c yum install openssl"的报错

大家好 我是寸铁👊
【Centos7】【DockerFile】解密失败的解决方案:揭秘Process "/bin/sh -c yum install openssl"的报错✨
喜欢的小伙伴可以点点关注 💝

前言

今天笔者在编写dockerfile的时候,报错了,咋一看编写的指令是没问题的,那是哪里出现了问题呢?下面跟着笔者来看看怎么解决这个问题吧!

报错如下:

ERROR [2/9] RUN yum install openssl                                                                                                                                                                                                       20.6s 

  [2/9] RUN yum install openssl:
20.31 ================================================================================
20.31  Package            Arch         Version                    Repository     Size
20.31 ================================================================================
20.31 Installing:
20.31  openssl            x8664       1:1.0.2k-26.el79          updates       494 k
20.31 Installing for dependencies:
20.31  make               x8664       1:3.82-24.el7              base          421 k
  20.31 Updating for dependencies:
  20.31  openssl-libs       x8664       1:1.0.2k-26.el79          updates       1.2 M
  20.31
  20.31 Transaction Summary
  20.31 ================================================================================
  20.31 Install  1 Package  (+1 Dependent package)
  20.31 Upgrade             ( 1 Dependent package)
  20.31
  20.31 Total download size: 2.1 M
  20.31 Is this ok [y/d/N]: Exiting on user command
  20.31 Your transaction was saved, rerun it with:
  20.31  yum load-transaction /tmp/yumsavetx.2024-06-01.12-26.2FgboK.yumtx
  Dockerfile:5
  3 |
     4 |     # 安装openssl
     5 | >>> RUN yum install openssl
     6 |
     7 |     # 安装必要的依赖
  ERROR: failed to solve: process "/bin/sh -c yum install openssl" did not complete successfully: exit code: 1

解决方案

根据提供的错误信息,安装 OpenSSL 时出现了交互式提示,询问是否要继续安装。
Dockerfile 中的yum install openssl命令需要在非交互模式下运行,以避免等待用户输入。
通过在运行 yum install openssl 命令时添加 -y 标志来实现非交互式安装。

修改 Dockerfile 中的相应行如下:

RUN yum install -y openssl

这样,安装 OpenSSL 将自动确认,并且不会等待用户输入。
重新构建你的Docker镜像,应该就不会再出现这个错误了。

总结

一般,在dockerfile中用yum安装都会加上-y用于实现非交互式安装。这其实也是dockerfile和正常的交互式shell安装的不同之处。所以,大家在编写dockerfile使用yum安装时要注意加上-y来进行默认确定,确保安装正常。


看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕


往期好文💕

保姆级教程

【保姆级教程】Windows11下go-zero的etcd安装与初步使用

【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero

【Go-Zero】手把手带你在goland中创建api文件并设置高亮


报错解决

【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项

【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案

【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案

【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案

【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案

【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案

【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案


Go面试向

【Go面试向】defer与time.sleep初探

【Go面试向】defer与return的执行顺序初探

【Go面试向】Go程序的执行顺序

【Go面试向】rune和byte类型的认识与使用

【Go面试向】实现map稳定的有序遍历的方式

在构建 Docker 镜像时,如果你遇到如下错误: ``` failed to solve: process "/bin/sh -c yum install -y which" did not complete successfully: exit code: 1 ``` 这意味着 `yum install -y which` 命令在容器构建过程中执行失败了。常见原因和解决方法如下: --- ### ✅ 常见原因与解决方法: #### 1. **基础镜像不是基于 yum 的系统** 如果你使用的是非 `yum` 的 Linux 镜像(例如 `alpine`、`debian`、`ubuntu`),那么 `yum` 命令是不可用的。 - **解决方法:** - 如果使用的是 **Ubuntu/Debian** 镜像,使用 `apt-get` 安装 `which`: ```Dockerfile RUN apt-get update && apt-get install -y which ``` - 如果使用的是 **Alpine** 镜像,使用 `apk` 安装: ```Dockerfile RUN apk add --no-cache which ``` #### 2. **基础镜像未配置网络或软件源** 如果基础镜像无法访问网络或软件源配置异常,也可能导致 `yum` 安装失败- **解决方法:** - 检查镜像是否可以正常访问互联网。 - 尝试运行 `yum clean all` 或更换镜像源。 #### 3. **缺少 root 权限** Docker 构建过程中可能以非 root 用户运行,导致无法执行 `yum install`。 - **解决方法:** - 确保 Dockerfile 中使用 `USER root` 或者在构建时具有足够权限。 - 示例: ```Dockerfile USER root RUN yum install -y which ``` --- ### ✅ 示例修复后的 Dockerfile 片段 #### 对于 CentOS、RHEL 等 yum 系统: ```Dockerfile FROM centos:7 RUN yum update -y && yum install -y which ``` #### 对于 Ubuntu/Debian: ```Dockerfile FROM ubuntu:20.04 RUN apt-get update && apt-get install -y which ``` #### 对于 Alpine: ```Dockerfile FROM alpine:3.18 RUN apk add --no-cache which ``` ---
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寸 铁

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值