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 命令运行正常。

在第二个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这意味着每个图像中只有一个“FROM”。这将使你更好地了解正在发生的事情。

相关内容