gpt4 book ai didi

docker - 编辑Dockerfile,以便镜像不在交互式shell中运行,而是从ENTRYPOINT运行

转载 作者:行者123 更新时间:2023-12-02 18:27:32 28 4
gpt4 key购买 nike

我正在尝试使用特定软件(picard)的docker镜像,并且该镜像旨在以交互方式运行,实际上,已经通过Dockerhub提供了一个已构建的docker镜像:

docker pull broadinstitute/picard

该图像将完美运行,将执行以下命令:
sudo docker run -i -t -v $PWD:/usr/working broadinstitute/picard

这样一来,您可以在镜像中启动实际的程序,例如:
java -jar /usr/picard/picard.jar [COMMAND] [OPTIONS] ...

我要完成的工作是在不输入交互式shell的情况下执行此镜像,就像这样:
sudo docker run --rm -v $PWD:/usr/working broadinstitute/picard [COMMAND] [OPTIONS] ...

据我了解,这可以通过在Dockerfile中创建一个 ENTRYPOINT来完成(请参阅下面的附录),但是在Dockerfile底部的addind下面的行将不起作用:
ENTRYPOINT ["java -jar /usr/picard/picard.jar"]

相反,当我如上所述运行图像时,不会生成任何输出,并且如果调用了特定命令(例如CreateSequenceDictionary),则会出现以下错误:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"CreateSequenceDictionary\": executable file not found in $PATH": unknown.



我想念什么?

Dockerfile

可以在github存储库中找到dockerfile: https://github.com/broadinstitute/picard/blob/master/Dockerfile。看起来如下:
FROM openjdk:8
MAINTAINER Broad Institute DSDE <dsde-engineering@broadinstitute.org>

ARG build_command=shadowJar
ARG jar_name=picard.jar

# Install ant, git for building
RUN apt-get update && \
apt-get --no-install-recommends install -y --force-yes \
git \
r-base \
ant && \
apt-get clean autoclean && \
apt-get autoremove -y

# Assumes Dockerfile lives in root of the git repo. Pull source files into container
COPY / /usr/picard/
WORKDIR /usr/picard

# Build the distribution jar, clean up everything else
RUN ./gradlew ${build_command} && \
mv build/libs/${jar_name} picard.jar && \
./gradlew clean && \
rm -rf src && \
rm -rf gradle && \
rm -rf .git && \
rm gradlew && \
rm build.gradle

RUN mkdir /usr/working
WORKDIR /usr/working

最佳答案

问题是如何定义ENTRYPOINT。

它应该是

ENTRYPOINT ["java", "-jar", "/usr/picard/picard.jar"]

src: https://docs.docker.com/v17.09/engine/reference/builder/#entrypoint

关于docker - 编辑Dockerfile,以便镜像不在交互式shell中运行,而是从ENTRYPOINT运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58168907/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com