我正在构建几个 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”。这将使你更好地了解正在发生的事情。