这是我的Dockerfile,简化了。原始文件是https://github.com/gremo/docker-folder-mirror/blob/master/Dockerfile:
FROM alpine:latest
COPY ./docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
当我在本地运行图像时(假设标签为folder-mirror:latest
)一切正常:
docker run --rm --env-file ./.env -v "${PWD}/data:/data" -v "${PWD}/logs:/var/log" folder-mirror:latest
但是,如果我尝试运行映像目录(从Docker Hub):
docker run --rm --env-file ./.env -v "${PWD}/data:/data" -v "${PWD}/logs:/var/log" gremo1982/folder-mirror
...它给了我以下错误:
C:\ Program Files \ Docker \ Docker \ resources \ bin \ docker.exe:错误守护程序的响应:OCI运行时创建失败:container_linux.go:346:启动容器进程引起“执行:\“ docker-entrypoint.sh \”:在$ PATH中找不到可执行文件“:未知。
这是我的第一个Docker映像,所以我很确定...我丢失了一些东西。实际上,如果我检查远程图像,则会得到:
/ # ls -la /usr/local/bin/
total 12
drwxr-xr-x 1 root root 4096 Feb 18 2020 .
drwxr-xr-x 1 root root 4096 Jan 16 22:52 ..
-rw-r--r-- 1 root root 890 Feb 18 2020 docker-entrypoint.sh
这是我的入口点不可执行。为什么?那么为什么要在本地运行?
为什么它在本地运行,我无法回答。您应该尝试两件事。正如其他评论者所建议的那样,对脚本执行chmod
以使其可执行。
另一个变化,根据Docker reference,ENTRYPOINT
命令采用两种形式。 exec
形式和shell
形式。您正在使用exec
。您的环境变量可能未正确加载。
尝试更改为shell
形式。