首页 > 编程语言 >Docker 启动alpine镜像中可执行程序文件遇到 not found

Docker 启动alpine镜像中可执行程序文件遇到 not found

时间:2023-09-06 18:34:39浏览次数:47  
标签:libc 可执行程序 blog 镜像 found Docker lib64 alpine

问题: docker alpine镜像中遇到 sh: xxx: not found

例如:
在容器内/app/目录下放置了可执行文件abc,启动时提示not found
/app/startup.sh: line 5: ./abc : not found

原因

由于alpine镜像使用的是musl libc而不是gnu libc,/lib64/ 是不存在的。但他们是兼容的,可以创建个软连接过去试试!
这种情况是因为动态链接库位置错误导致的,alpine镜像使用的是musl libc而不是gun libc。因而动态链接库的位置不一致 。
而一般二进制文件在linux系统下编译,动态链接库是到/lib64目录下的,在alpine镜像内无/lib64目录 。

解决办法

方案1. 创建lib64的软连接,在Dockerfile基础镜像内增加执行:
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
方案2:
使用其他操作系统,如centos作为基础镜像。

参考:

  1. https://liumiaocn.blog.csdn.net/article/details/89702529?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-89702529-blog-121274698.235^v38^pc_relevant_yljh&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-89702529-blog-121274698.235^v38^pc_relevant_yljh&utm_relevant_index=2

标签:libc,可执行程序,blog,镜像,found,Docker,lib64,alpine
From: https://www.cnblogs.com/dingwc/p/17683099.html

相关文章

  • Centos7安装Docker全过程记录(无坑版教程)
     一、安装前必读在安装Docker之前,先说一下配置,我这里是Centos7Linux内核:官方建议3.10以上,3.8以上貌似也可。注意:本文的命令使用的是root用户登录执行,不是root的话所有命令前面要加sudo1.查看当前的内核版本uname-r2.使用root权限更新yum包(生产环境中此步操作......
  • docker 中安装kafka
    docker中安装kafka docker中安装kafka在安装kafka之前需要先安装zookeeper,因为kafka启动会将元数据保存在zookeeper中,zookeeper是一种分布式协调服务,可以再分布式系统中共享配置,协调锁资源,提供命名服务。zookeeper安装1、在docker中拉取zookeeper镜像dockerpull......
  • Docker的基础安装
    卸载旧版本yumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-engine安装GCCyum-yinstallgccyum-yinstallgcc-c++安装软件包yuminstall-yyum-utils设置镜像仓库官方设置y......
  • docker 修改存储目录
    有以下两种修改方式https://blog.csdn.net/weixin_45720992/article/details/131136505方法1.修改docker默认存储位置step1:docker默认存储路径在/var/lib/docker下[root@node01system]#dockerinfo|grep-idirDockerRootDir:/var/lib/dockerstep2:修改默认......
  • docker 打开报错 windows hypervisor is not present docker desktop is unable to de
     dockerdesktop-windowshypervisorisnotpresentdockerdesktopisunabletodetectahypervisor.hardwareassistedvirtualizationanddataexecutionprotectionmustbeenabledintheblos.seehttps://docsdocker.com/desktop/troubleshoot/topics/#virtua......
  • 使用 Docker Compose 部署 Redis Sentinel 高可用架构
    在现代应用中,无法容忍系统中断或数据丢失。Redis作为一种高性能的内存数据库,被广泛应用于缓存、会话管理等场景。然而,即使我们拥有可伸缩的RedisCluster集群,也需要考虑在主节点故障时自动切换到从节点的机制。这时候RedisSentinel就派上用场了。高可用性是分布式应用的核心......
  • 优化Docker权限管理:配置Docker用户组
    Docker利用Linux的用户和组权限来管理对Docker守护进程的访问权限。一般情况下,只有root用户和属于docker用户组的用户才被允许访问Docker守护进程。在Linux系统上使用Docker时,如果您尚未配置docker用户组,那么作为非root用户执行Docker相关命令将要求使用sudo......
  • Docker三剑客之docker-compose
    docker-compose是Docker生态系统中的一个重要成员,它允许开发人员使用一个简单的配置文件来定义和运行多个Docker容器。通过docker-compose,你可以定义应用程序的各个组件、容器之间的依赖关系以及网络配置,从而实现在一个命令中启动、停止和管理整个应用程序栈。安装docker-co......
  • Docker 及 Docker Compose 安装指南
    Docker是一个开源的容器化平台,可以帮助我们快速构建、打包和运行应用程序。而DockerCompose则是用于管理多个容器应用的工具,可以轻松定义和管理多个容器之间的关系。现在,让我们开始安装过程吧!docker安装apt安装sudoaptupdatesudoaptinstalldocker.iosudosystemctlstatu......
  • 使用 SQLStudio 进行数据库管理并通过 Docker Compose 进行部署
    在现代软件开发中,数据库管理是一个至关重要的环节。SQLStudio是一个强大的工具,可以帮助开发人员轻松管理数据库,现在改名成SQLynx,我们用的是旧的镜像,本文还是用SQLStudio这个名称。同时,使用DockerCompose可以简化应用程序的部署过程,使整个开发流程更加高效和可靠。最近了看到有......