【发布时间】:2019-11-16 07:13:30
【问题描述】:
我正在使用 dockerfile-maven-plugin 创建 docker 映像,我想将 shell 放入容器中,但出现此错误:
OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown
我试过了:
- docker exec -it
/bin/bash - docker exec -it
bash
结果相同
这就是我运行图像的方式:
docker run <image_id>
这就是我创建图像的方式:
mvn install dockerfile:build
在 pom.xml 上构建:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.9</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我希望在容器中打开一个外壳
【问题讨论】:
-
错误很明显,容器中不存在“bash”。你的基本形象是什么?发布一份你正在构建镜像的 Dockerfile 的副本(?)。
-
确定:``` FROM openjdk:8-jdk-alpine VOLUME /tmp ARG DEPENDENCY=target/dependency COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib COPY ${DEPENDENCY} /META-INF /app/META-INF COPY ${DEPENDENCY}/BOOT-INF/classes /app ENTRYPOINT ["java","-cp","app:app/lib/*","hello.Application"] ```
-
我应该可以将这个添加到原始帖子中吗?
-
您应该能够更新您的问题,是的。参考。你的 Dockerfile 你正在构建一个 alpine 映像,它们在大多数情况下不包含 bash,可以使用例如“sh”或“ash”。例如检查这个问题:stackoverflow.com/q/35689628/1423507
-
另外,docker exec 需要你在其中执行命令的容器,参考。 docs.docker.com/engine/reference/commandline/exec - 用法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]