Я пытаюсь использовать образ докера определенного программного обеспечения ( picard ), и этот образ предназначен для интерактивного запуска, фактически уже созданный образ докера предоставляется через Dockerhub:
docker pull broadinstitute/picard
Этот образ прекрасно работает с помощью следующей команды:
sudo docker run -i -t -v $PWD:/usr/working broadinstitute/picard
Чтобы в образе можно было запустить реальную программу, например:
java -jar /usr/picard/picard.jar [COMMAND] [OPTIONS] ...
Что яЯ пытаюсь выполнить это, чтобы запустить этот образ, не входя в интерактивную оболочку, просто так:
sudo docker run --rm -v $PWD:/usr/working broadinstitute/picard [COMMAND] [OPTIONS] ...
Насколько я понимаю, это можно сделать, создав ENTRYPOINT
в Dockerfile (см. в приложении ниже), но addind следующая строка в нижней части Dockerfile не будет работать:
ENTRYPOINT ["java -jar /usr/picard/picard.jar"]
Вместо этого, когда я запускаю изображение, как указано выше, выходные данные не генерируются, и если конкретная командавызванный (например, CreateSequenceDictionary), я получаю следующую ошибку:
docker: ответ об ошибке от демона: Ошибка выполнения времени выполнения OCI: container_linux.go: 345: начальный контейнерпроцесс вызвал "exec: \" CreateSequenceDictionary \ ": исполняемый файл не найден в $ PATH": неизвестно.
Что мне не хватает?
Dockerfile
Докер-файл можно найти в репозитории github по адресу: 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