Imagens Docker: não é possível encontrar o comando instalado anteriormente?

Imagens Docker: não é possível encontrar o comando instalado anteriormente?

Estou construindo várias imagens do Docker, mas não consigo acessar determinados comandos, embora esteja importando imagens contendo esses comandos. Exemplo:

# 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

Isso gera um erro "descompactação não encontrada", embora esteja instalado na primeira imagem. O comando wget funciona perfeitamente bem.

Ao adicionar a instalação do unzip no segundo Dockerfile, funciona normalmente:

# 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

Qualquer ideia? Sendo novo no Docker, não sei o que procurar... Obrigado.

Responder1

Vários "FROM" não funcionam da maneira esperada. Tome cada FROM como separador para uma nova imagem. Isso significa que você está construindo 3 imagens diferentes e a última será:

    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

Onde você não instalou, descompacte.

Odocumentação sobre issoé um pouco esparso, mas acho que explica bem.

Eu sugiro que você coloque cada imagem que deseja construir sozinha, Dockerfileo que significa ter apenas um "FROM" em cada uma. Isso lhe dará uma transparência muito melhor sobre o que está acontecendo.

informação relacionada