Docker 使用入口点时未找到文件

Docker 使用入口点时未找到文件,docker,dockerfile,Docker,Dockerfile,我正在尝试使用入口点,每当我这样做时,我就会得到一个错误,即没有这样的文件或目录 Dockerfile: FROM ubuntu:18.04 COPY . /home COPY docker-entrypoint.sh /usr/local/bin/ RUN ln -s /usr/local/bin/docker-entrypoint.sh WORKDIR /home RUN chmod 777 /usr/local/bin/docker-entrypoint.sh ENTRYPOIN

我正在尝试使用
入口点
,每当我这样做时,我就会得到一个错误,即
没有这样的文件或目录

Dockerfile:

FROM ubuntu:18.04

COPY . /home

COPY docker-entrypoint.sh /usr/local/bin/

RUN ln -s /usr/local/bin/docker-entrypoint.sh

WORKDIR /home
RUN chmod 777 /usr/local/bin/docker-entrypoint.sh

ENTRYPOINT ["docker-entrypoint.sh"]

CMD ["/bin/bash"]
我试过给它权限,试过用绝对路径运行,也试过,试过用
#/bin/bash
&
#/bin/sh
最后,我仍然得到文件未找到错误


我不确定问题出在哪里。

你问的问题: 我不记得确切的原因,但找不到该文件,因为您调用的是
docker entrypoint.sh
,而不是
/docker entrypoint.sh

您将很快提出的问题: 这并不能完全解决你的问题。您已将执行权限添加到
/usr/local/bin
中的
docker entrypoint.sh
副本中,但在
/home
中有另一个文件副本首先找到,并且没有执行权限。当您尝试使用它时,将出现权限错误。一个简单的解决方法(取决于您想做什么)包括一个修改的入口点:

ENTRYPOINT ["/bin/bash", "docker-entrypoint.sh"]
如果您经常使用Docker,请提供更多详细信息: 能够进入容器或图像来检查其内容是非常宝贵的。对于基于ubuntu的图像,请在某处写下以下行(基本上每隔一个linux操作系统将
bash
替换为
sh
):


这将在该图像中打开一个shell,让您在Dockerfile运行的同一环境中玩游戏,并调试导致您出现问题的任何东西。

看起来您的docker-entrypoint.sh位于
/usr/local/bin
中,但您可以使用
Workdir
切换到
/home
目录。如果要在主目录中使用
docker entrypoint.sh
,则必须将文件复制到此目录。这应该不会有问题,因为当我执行
复制时/主页
它还复制此文件,入口点应该能够正确执行此操作?完整的错误消息是什么,您使用的是什么基本图像?抱歉,已更新。我正在使用
ubuntu:18.04
和错误消息os
standard_init_linux.go:207:exec用户进程导致“没有这样的文件或目录”
Ya,这确实有帮助。我会记住的。谢谢。但是现在我无法使用
docker run-ti container bash进入bash
当您在Dockerfile中指定
ENTRYPOINT
时,您需要在运行映像时显式覆盖它,语法与在容器上执行类似操作时略有不同:将
docker run-ti--entrypoint=bash image\u name
docker exec-ti container\u name bash
进行比较。如果这是您要问的问题?如果您询问如何结合ENTRYPOINT和CMD来获取默认参数或诸如此类的内容,这超出了stackoverflow注释的范围,您需要搜索或询问其他问题和/或阅读文档;这方面的文档非常可靠。不要紧,我必须这样做->
docker run -it --rm --entrypoint=bash my_image_name