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

最初のイメージにインストールされているにもかかわらず、「unzip が見つかりません」というエラーが発生します。コマンド wget は完全に正常に動作します。

2 番目の 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

unzip をインストールしていない場所。

それに関する文書少し内容が薄いですが、うまく説明されていると思います。

構築したい各イメージをそれぞれ別々に配置することをお勧めしますDockerfile。つまり、各イメージには 1 つの「FROM」のみが含まれることになります。これにより、何が起こっているかの透明性が大幅に向上します。

関連情報