0

我从以下 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
4

1 回答 1

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 尝试运行该命令而不是将argsdestroy附加到destroyocp-install

于 2021-03-05T09:44:38.953 回答