
Ich erstelle mehrere Docker-Images, kann aber scheinbar nicht auf bestimmte Befehle zugreifen, obwohl ich Images importiere, die diese Befehle enthalten. Beispiel:
# Dockerfile ubuntu-essentials
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get -y install ssh rsync git graphviz gedit-plugins wget nano zlibc zlib1g-dev build-essential libncurses5-dev libncursesw5-dev libboost-dev gdebi software-properties-common unzip
# Dockerfile fastqc
FROM ubuntu:14.04
FROM rioualen/ubuntu-essentials:1.0
ENV SOURCE_DIR=~/app_sources/
ENV BIN_DIR=~/bin/
WORKDIR ${SOURCE_DIR}
RUN wget --no-clobber http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.5.zip
RUN unzip -o fastqc_v0.11.5.zip
Dies führt zu einem Fehler „Unzip nicht gefunden“, obwohl es im ersten Image installiert ist. Der Befehl wget funktioniert einwandfrei.
Wenn Sie die Installation von unzip in die zweite Docker-Datei einfügen, funktioniert es normal:
# Dockerfile fastqc
FROM ubuntu:14.04
FROM rioualen/ubuntu-essentials:1.0
ENV SOURCE_DIR=~/app_sources/
ENV BIN_DIR=~/bin/
RUN apt-get -y install unzip
WORKDIR ${SOURCE_DIR}
RUN wget --no-clobber http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.5.zip
RUN unzip -o fastqc_v0.11.5.zip
Irgendeine Idee? Da ich neu bei Docker bin, weiß ich nicht, wonach ich suchen soll ... Danke.
Antwort1
Einige „FROMs“ funktionieren nicht wie erwartet. Verwenden Sie jedes FROM als Trennzeichen für ein neues Bild. Das bedeutet, dass Sie 3 verschiedene Bilder erstellen und das letzte wird sein:
FROM rioualen/ubuntu-essentials:1.0
ENV SOURCE_DIR=~/app_sources/
ENV BIN_DIR=~/bin/
WORKDIR ${SOURCE_DIR}
RUN wget --no-clobber http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.5.zip
RUN unzip -o fastqc_v0.11.5.zip
Wo Sie es noch nicht installiert haben, entpacken Sie es.
DerDokumentation dazuist etwas spärlich, aber ich denke, es erklärt es gut.
Ich würde vorschlagen, dass Sie jedes Bild, das Sie erstellen möchten, einzeln ablegen, Dockerfile
was bedeutet, dass jedes Bild nur ein „FROM“ enthält. Dadurch erhalten Sie eine viel bessere Transparenz über das, was vor sich geht.