首页 > 解决方案 > sh: ./bc2influx: 进入停止的容器时未找到

问题描述

运行 docker 容器时出现问题。

➜  bc_to_influx git:(master) ✗ docker run registry.gitlab.com/xxx/bc_to_influx:latest
standard_init_linux.go:207: exec user process caused "no such file or directory"

当我调试时,我进入停止的容器:

docker commit 0db73216baaf  user/test_image 
docker run -ti --entrypoint=sh user/test_image

ls命令下,我只能执行我的可执行文件:

/bc2influx # ls -al
total 20552
drwxr-xr-x    1 root     root          4096 Jun  6 10:32 .
drwxr-xr-x    1 root     root          4096 Jun  6 11:53 ..
-rwxr-xr-x    1 root     root      21034520 Jun  6 10:29 bc2influx
/bc2influx # 

但是当我尝试执行时,我得到:

/bc2influx # ./bc2influx 
sh: ./bc2influx: not found

我可以 vi,cat 执行,但不能执行

这是我的 Dockerfile

FROM alpine

WORKDIR /bc2influx/
COPY ./release/bc2influx /bc2influx/
RUN ls -al /bc2influx/
CMD [ "./bc2influx" ]

我以前用以下方式构建我的可执行文件:

go build -o ./release/bc2influx -v -ldflags '-extldflags "-static"' ./...

知道发生了什么吗?

标签: dockergo

解决方案


看起来像musl库问题试试这个构建命令go build -ldflags="-s -w"


推荐阅读