
Я создаю несколько образов 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" в каждом. Это даст вам гораздо большую прозрачность того, что происходит.