如果我在 Alpine 上在go 1.7.1上构建https://github.com/m3europe/procwrap并尝试在ubuntu trusty上运行二进制文件,则找不到文件,如果在trusty上构建并尝试在alpine上运行,则文件也未找到。我怀疑这与以某种方式进行链接有关,但到目前为止,我大部分时间都在托管执行环境中度过,所以我有点不精打采。我看似幼稚的理解是,AMD64构建应可在任何AMD64 linux发行版上运行,不是吗?
下面的Dockerfile演示了此问题。在第6行下载的可执行文件基于golang:1.7.1-alpine镜像构建:
FROM ubuntu:trusty
RUN apt-get update
RUN apt-get install -y wget
RUN mkdir /procwrap
WORKDIR /procwrap
RUN wget https://github.com/myles-mcdonnell/procwrap/releases/download/v1.0.0/procwrap.v1.amd64 -O procwrap
RUN wget https://raw.githubusercontent.com/myles-mcdonnell/procwrap/master/procwrap.toml -O procwrap.toml
RUN chmod +x procwrap
CMD ./procwrap -v
最佳答案
使用ldd you-bin-path
打印共享库依赖关系,也许两个系统具有不同的lib路径结构。