繁体   English   中英

带有 Alpine Linux 的 Docker 映像:肯定存在可执行文件,但在尝试执行时找不到

[英]Docker image with Alpine Linux: an executable file is definitely there but cannot be found while trying to execute

这是我的终端的 output,而我在带有 Alpine 图像的 Docker 容器的 shell 内:

bash-5.0# ls
makeThumb
bash-5.0# ./makeThumb 
bash: ./makeThumb: No such file or directory
bash-5.0# 

如您所见,我有一个名为makeThumb的可执行文件,它肯定存在(参见ls的 output)。 但是,奇怪的是,当我尝试使用./makeThumb执行它时,它会显示No such file or directory

如何解决这个问题?

我的 Dockerfile:

FROM mhart/alpine-node:14 AS build
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .

FROM mhart/alpine-node:14
RUN apk update && apk add bash
COPY --from=build /app/ /app/
WORKDIR /app
RUN npm prune --production
EXPOSE 3000

CMD [ "node", "server.js" ]

ldd makeThumb

ldd makeThumb 
    /lib64/ld-linux-x86-64.so.2 (0x7f0c421ae000)
    libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f0c421ae000)
    libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f0c421ae000)
    librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x7f0c421ae000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x7f0c42015000)
    libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f0c421ae000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7f0c42001000)
    libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f0c421ae000)
Error relocating makeThumb: __strdup: symbol not found
Error relocating makeThumb: __vfprintf_chk: symbol not found
Error relocating makeThumb: __sprintf_chk: symbol not found
Error relocating makeThumb: __snprintf_chk: symbol not found
Error relocating makeThumb: __vsnprintf_chk: symbol not found
Error relocating makeThumb: __strcat_chk: symbol not found
Error relocating makeThumb: __memset_chk: symbol not found
Error relocating makeThumb: __fprintf_chk: symbol not found
Error relocating makeThumb: __memcpy_chk: symbol not found
Error relocating makeThumb: __longjmp_chk: symbol not found

Alpine 使用了musl ,这是一个简约的 libc。 我的猜测是您的二进制文件正在使用 Alpine 下不存在的非标准函数。

我看到了两种解决方案:

  • 尝试在您的 docker 容器中安装glibc
  • 可能是最简单的解决方案:尝试找到默认使用它的 Docker 图像(简约的 Debian/Ubuntu Docker 应该这样做)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM