docker工人组成卷“没有这样的文件或目录”
我是与docker工作的初学者,特别是docker工作者。 目前,创build我最初的简易docker环境,我遇到了第一个错误,我不知道为什么。 我试图在stackoverflowsearch解决scheme,但没有发现任何可以帮助我。 用“docker-compose up”启动我的docker我得到以下错误:
$ docker-compose up
删除errorinstance_app_1
重新创build8a358dfcb306_8a358dfcb306_8a358dfcb306_errorinstance_app_1 …
重新创build8a358dfcb306_8a358dfcb306_8a358dfcb306_errorinstance_app_1 …错误
错误:对于8a358dfcb306_8a358dfcb306_8a358dfcb306_errorinstance_app_1无法启动服务应用程序:oci运行时错误:container_linux.go:265:启动容器进程导致“exec:\”./ run.sh \“:stat ./run.sh:没有这样的文件或目录”
错误:对于应用程序无法启动服务应用程序:oci运行时错误:container_linux.go:265:启动容器进程导致“exec:\”./ run.sh \“:stat ./run.sh:没有这样的文件或目录”
错误:提出项目时遇到错误。
所以。 遵循我的文件夹结构:
- 项目
- 泊坞窗,compose.yml
- docker
- Java的
- Dockerfile
- Java的
- SRC
- run.sh
在我的docker-compose.yml之后:
version: '2' services: app: build: dockerfile: ./Docker/Java/Dockerfile context: . volumes: - ./src:/usr/local/etc/ working_dir: /usr/local/etc/ command: ./run.sh
并遵循我的docker文件:
FROM java:7-jdk-alpine # WORKDIR /usr/local/etc
run.sh
echo "Hello world."
是的,我知道我只能在docker-compose文件中做这个解决scheme。 但是将来我需要扩展Dockerfile。
有人可以帮助我分别有没有人看到这个问题?
它看起来像泊坞窗撰写无法find你的run.sh
文件。 这个文件需要包含在你的docker镜像中。
将Dockerfile更改为以下内容,然后使用docker build -t <YOUR_IMAGE_NAME> .
重build映像docker build -t <YOUR_IMAGE_NAME> .
。
FROM java:7-jdk-alpine ADD run.sh /usr/local/etc/run.sh
一旦你的图像被重build,再次运行docker-compose up
。
解决这个问题最简单的方法是在容器中执行bash会话,然后在容器内部,如果文件不在path中,则必须检查指定path中是否存在文件,创build时必须包含该文件将图片导入到docker文件中,或者通过docker-compose里面的卷。
另一件要检查的是你正在使用的相对path。 当您检查docker容器中的文件时,将会很清楚
docker执行者 – 这个CONTAINER_NAME bash
我build议你在Docker撰写文件中创build一个卷,因为这是更简单的方法,也是最好的方法。
有一个问题,我想要做你,为什么你把Dockerfile文件放在一个Javapath中?
这不是一个好主意o遵循指南正确的方法是把你的dockerfile文件放到一个环境文件夹中,这样dockerfile文件就不会和你的应用程序的java源相关
我得到了这个错误很多,经过大量的调查,看起来像一些图像已损坏。
删除和重build解决了这个问题。 这不是docker安装或configuration本身。
问题是您在dockerfile中使用的基础泊坞窗图像:
FROM java:7-jdk-alpine
您正尝试通过运行run.sh
bash脚本启动容器。 但是上面的图片不支持bash
本身
作为参考,您可以在这里看到docker hub页面上面的图片的文档。 在这里引用必要的部分:
java的:高山
…
为了最大限度地减less图像尺寸,在Alpine图像中添加其他相关工具(如git或bash )并不常见。 使用这个图像作为基础,在你自己的Dockerfile中添加你需要的东西(如果你不熟悉的话,请参考高山图像描述,了解如何安装包的例子)。
这是关于这个问题。
现在,我可以想到2个解决scheme:
- 只需使用
java:7-jdk
作为基本映像而不是java:7-jdk-alpine
-
在基本映像
java:7-jdk-alpine
的顶部安装bash
,将dockerfile更改为:FROM java:7-jdk-alpine RUN apk update && apk upgrade && apk add bash #WORKDIR /usr/local/etc
*在高山linux安装bash步骤的来源在这里