【问题标题】:How to exec into a docker container when the image was created with dockerfile-maven-plugin?使用 dockerfile-maven-plugin 创建映像时如何执行到 docker 容器中?
【发布时间】: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...]

标签: docker alpine


【解决方案1】:

因为我正在构建高山图像,正确的命令是

docker exec -it  <container_id> /bin/ash

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 2018-04-23
    • 2017-04-16
    • 2019-08-28
    相关资源
    最近更新 更多