Docker 映像:找不到先前安裝的指令?

Docker 映像:找不到先前安裝的指令?

我正在建立幾個 docker 映像,但儘管我正在導入包含所述命令的映像,但我似乎無法存取某些命令。例子:

# 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

儘管它安裝在第一個映像中,但這會引發錯誤「未找到解壓縮」。命令 wget 工作得很好。

當在第二個Dockerfile中新增unzip的安裝時,它可以正常運作:

# 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

任何想法?作為 Docker 新手,我不知道該尋找什麼......謝謝。

答案1

有幾個“FROM”不按您期望的方式工作。將每個 FROM 作為新圖像的分隔符號。這意味著您正在建立 3 個不同的圖像,最後一個將是:

    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

你還沒有安裝解壓縮的地方。

有關它的文檔有點稀疏,但我認為它很好地解釋了這一點。

我建議您將要建立的每個圖像放入自己的圖像中,Dockerfile這意味著每個圖像中只有一個“FROM”。這將使您對正在發生的事情有更好的透明度。

相關內容