docker - 使用 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
,最后,我仍然得到文件未找到错误。
我不确定问题是什么。
解决方案
您问的问题:
我不记得确切原因,但是找不到该文件,因为您正在调用它docker-entrypoint.sh
而不是./docker-entrypoint.sh
.
您很快就会提出的问题:
这并不能完全解决您的问题。您已向docker-entrypoint.sh
in的副本添加了执行权限/usr/local/bin
,但是/home
首先找到的文件 in 的另一个副本没有执行权限。尝试使用它时会出现权限错误。一个简单的解决方法(取决于你想要做什么)包括一个修改过的入口点:
ENTRYPOINT ["/bin/bash", "docker-entrypoint.sh"]
如果您将经常使用 Docker,请提供更多详细信息:
能够输入容器或映像以检查其内容是非常宝贵的。对于基于 ubuntu 的映像,请在某处写下以下行(基本上所有其他 linux 操作系统都替换为)bash
:sh
docker run -it --rm --entrypoint=bash my_image_name
这将在该映像中打开一个 shell,让您在 Dockerfile 运行的同一环境中进行操作,并调试导致您出现问题的任何内容。
推荐阅读
- android - firebase a/b 实验中的用户数量少
- javascript - 用 Tampermonkey 在每一页上连续替换一个单词
- c - 导入时对 POSIX 函数的未定义引用
- ruby - 安装 ruby-2.3.3 后无法安装 gems - openssl
- java - 为什么即使没有步骤过滤器,在eclipse中使用“step into”时也不显示对构造函数的调用
- ssl - 为什么 Artifactory 的 SSL 配置不起作用?
- batch-file - 使用 Inkscape 从批处理文件转换 Svg 到 png 许多文件
- c - c中的数组管理
- python - 如何在 Python 中将值从 0:270 转换为 0:1023?
- c++ - 如何在 C++ 中调用默认模板函数参数?