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