docker容器无法';找不到文件,但文件存在
我试图打包到Docker容器中,但发现一个奇怪的行为docker容器无法';找不到文件,但文件存在,docker,Docker,我试图打包到Docker容器中,但发现一个奇怪的行为 $ tree . ├── Do
$ tree
.
├── Dockerfile
├── gotty
└── gotty_linux_amd64.tar.gz
Dockerfile:
FROM alpine:3.11.3
RUN mkdir -p /home/gotty
WORKDIR /home/gotty
COPY gotty /home/gotty
RUN chmod +x /home/gotty/gotty
CMD ["/bin/sh"]
该映像是无问题构建的:
[strip...]
Removing intermediate container 0dee1ab645e0
---> b5c6957d36e1
Step 7/9 : COPY gotty /home/gotty
---> fb1a1adec04a
Step 8/9 : RUN chmod +x /home/gotty/gotty
---> Running in 90031140da40
Removing intermediate container 90031140da40
---> 609e1a5453f7
Step 9/9 : CMD ["/bin/sh"]
---> Running in 30ce65cd4339
Removing intermediate container 30ce65cd4339
---> 099bc22ee6c0
Successfully built 099bc22ee6c0
chmod
成功更改了文件模式。所以/home/gotty/gotty
出现了
$ docker run -itd 099bc22ee6c0
9b219a6ef670b9576274a7b82a1b2cd813303c6ea5280e17a23a917ce809c5fa
$ docker exec -it 9b219a6ef670 /bin/sh
/home/gotty # ls
gotty
/home/gotty # ./gotty
/bin/sh: ./gotty: not found
进入容器,gotty命令就在那里。我用相对路径运行它。为什么找不到
。查看ldd gotty
的输出。尝试添加libc6 compat
:
apk add libc6-compat
看看这是否解决了问题。您应该使用ls-l
来查看属性,而不是ls
。只要运行新图像,x属性就应该存在。可能是二进制文件本身返回了错误?