一次使用Dockerfile构建tomcat镜像时遇到的Linux内核问题

当前版本

[root@zyrox-test alpine_images]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@zyrox-test alpine_images]# uname -a
Linux zyrox-test 5.5.11-1.el7.elrepo.x86_64 #1 SMP Fri Mar 20 10:34:37 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux

使用dockerfile构建tomcat镜像
在这里插入图片描述

报错

rm: can’t remove ‘/usr/local/tomcat/webapps/docs’: Directory not empty

进行一波搜索引擎信息检索,发现GitHub似乎有人讨论过一样的问题:

https://github.com/docker-library/busybox/issues/77

在这里插入图片描述

尝试升级内核解决该问题

先下载内核rpm安装包:
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
我选择目前比较新且是稳定版本的一个内核版本如下

kernel-ml-5.18.15-1.el7.elrepo.x86_64.rpm

(附:内核版本号说明)

> major.minor.patch-build.desc
> 
> major : 主版本号,有结构变化才变更 
> minor : 次版本号,新增功能时才发生变化,一般奇数表示测试版,偶数表示生产版 
> patch : 补丁包数或次版本的修改次数 
> build : 编译(或构建)的次数,每次编译可能对少量程序做优化或修改,但一般没有大的(可控的)功能变化。
> desc : 当前版本的特殊信息,其信息由编译时指定,具有较大的随意性,有如下的标识是常用的:
> rc(或r),表示发行候选版本(release candidate),rc后的数字表示该正式版本的第几个候选版本,多数情况下,各候选版本之间数字越大越接近正式版。
> smp,表示对称多处理器(Symmetric MultiProcessing)。
> pp,在Red Hat Linux中常用来表示测试版本(pre-patch)。 
> EL,在Red Hat Linux中用来表示企业版Linux(Enterprise Linux)。 
> mm,表示专门用来测试新的技术或新功能的版本。 
> fc,在Red Hat Linux中表示Fedora Core。 
> 
> 例如:用命令uname -a查看内核版本号
> 在CentOS下如:
> Linux localhost 2.6.32-642.15.1.el6.x86_64 #1 SMP Fri Feb 24 14:31:22
> UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 说明如下:
> 
> 第一个数字:2, 主版本号 
> 第二个数字:6, 次版本号,当前为稳定版本 
> 第三个数字:32, 修订版本号
> el6:表示内核是 RedHat / CentOS 系列6.x发行版专用内核
> x86_64:表示64位架构

升级内核操作

#卸载当前内核:
for i in `rpm -qa | grep kernel`; do rpm -e "${i}" --nodeps; done

[root@zyrox-test opt]# rpm -ivh kernel-ml-5.18.15-1.el7.elrepo.x86_64.rpm
warning: kernel-ml-5.18.15-1.el7.elrepo.x86_64.rpm: Header V4 DSA/SHA256 Signature, key ID baadae52: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:kernel-ml-5.18.15-1.el7.elrepo   ################################# [100%]
Failed to install module kvm_ivshmem

Broadcast message from systemd-journald@zyrox-test (Thu 2022-08-04 20:39:13 CST):

dracut[58955]: Failed to install module kvm_ivshmem


Message from syslogd@zyrox-test at Aug  4 20:39:13 ...
 dracut:Failed to install module kvm_ivshmem

#此主机是虚拟机,可能是因为安装了FusionCompute的vmtools,Huawei官方文档指出此错误不影响操作系统补丁的安装,可忽略


#关键一步,设置默认启动内核:
[root@zyrox-test opt]# grub2-set-default 0
[root@zyrox-test opt]# reboot
## 完成升级内核
[root@zyrox-test ~]# uname -a
Linux zyrox-test 5.18.15-1.el7.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 28 09:26:15 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux

[root@zyrox-test ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.18.15-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (5.5.11-1.el7.elrepo.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-42b4c12b21384358853c44fea27eb8e8) 7 (Core)
[root@zyrox-test ~]# grub2-editenv list
saved_entry=0

使用同样的Dockerfile再次构建镜像,成功完成,问题解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值