Imagens do Docker: não consegue encontrar o comando instalado anteriormente?

2

Estou criando várias imagens docker, mas parece que não consigo acessar determinados comandos, embora esteja importando imagens contendo os comandos mencionados. 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 "descompactar não encontrado", embora esteja instalado na primeira imagem. O comando wget funciona perfeitamente bem.

Ao adicionar a instalação do unzip no segundo Dockerfile, ele 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

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

    
por rioualen 03.05.2016 / 13:10

1 resposta

0

Vários "FROM" não funcionam da maneira esperada. Tome cada FROM como um separador para uma nova imagem. Isso significa que você está criando três 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 o descompactar.

A documentação é um pouco escassa, mas acho que explica tudo bem.

Sugiro que você coloque cada imagem que deseja construir em seu próprio Dockerfile , o que significa ter apenas um "FROM" em cada. Isso lhe dará uma transparência muito melhor sobre o que está acontecendo.

    
por 25.05.2016 / 04:36

Tags