Docker 错误:OCI 运行时执行失败:执行失败:container_linux.go

时间:2021-03-05 09:12:08

标签: docker dockerfile docker-entrypoint docker-exec

我从以下 dockerfile 创建了一个名为 ocp-install 的 docker 镜像

    FROM registry.access.redhat.com/ubi8/ubi-minimal:latest

    ARG INSTALL_DIR=/root/install-dir

    ENV PATH $PATH:$INSTALL_DIR

    WORKDIR $INSTALL_DIR

    RUN microdnf update && \
        microdnf install -y yum findutils && \
        mkdir -p $INSTALL_DIR

    COPY ocp-install $INSTALL_DIR

    ENTRYPOINT ["/bin/bash", "/usr/bin/ocp-install"]

我已运行命令 docker run -it ocp-install create 进行安装。

现在我想使用命令 docker exec -it <containerID> destroy 销毁安装 ,但是它给出了以下错误

OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"destroy\": executable file not found in $PATH": unknown

1 个答案:

答案 0 :(得分:1)

简答:

exec 运行一个新命令,destroy 是 ocp-install 的子命令,所以你必须指定整个命令:

docker exec -it <containerID> -- /usr/bin/ocp-install destroy

说明

https://docs.docker.com/engine/reference/builder/#entrypoint所述,

<块引用>

docker run 的命令行参数将附加在 exec 形式的所有元素之后 ENTRYPOINT

ENTRYPOINT 适用于 docker run 但不适用于 docker exec

https://docs.docker.com/engine/reference/commandline/exec/所述,

<块引用>

docker exec 命令在正在运行的容器中运行一个新命令。

当您尝试使用 docker exec -it <containerID> destroy 命令时,docker 尝试运行命令 destroy 而不是将 destroy 参数附加到 ocp-install