首页 > 解决方案 > 使用 ENTRYPOINT 时未找到文件

问题描述

我正在尝试使用ENTRYPOINT,每当我这样做时,我都会收到错误消息no such file or directory

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,最后,我仍然得到文件未找到错误。

我不确定问题是什么。

标签: dockerdockerfile

解决方案


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

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

ENTRYPOINT ["/bin/bash", "docker-entrypoint.sh"]

如果您将经常使用 Docker,请提供更多详细信息: 能够输入容器或映像以检查其内容是非常宝贵的。对于基于 ubuntu 的映像,请在某处写下以下行(基本上所有其他 linux 操作系统都替换为)bashsh

docker run -it --rm --entrypoint=bash my_image_name

这将在该映像中打开一个 shell,让您在 Dockerfile 运行的同一环境中进行操作,并调试导致您出现问题的任何内容。


推荐阅读