Образы 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 not found", хотя он установлен в первом образе. Команда wget работает отлично.

При добавлении установки unzip во второй Dockerfile все работает нормально:

# 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.

Theдокументация по немунемного скудно, но я думаю, что это хорошо объясняет.

Я бы посоветовал вам поместить каждое изображение, которое вы хотите построить, в свое собственное, Dockerfileчто означает иметь только одно "FROM" в каждом. Это даст вам гораздо большую прозрачность того, что происходит.

Связанный контент