Dockerfile正确构建但添加失败

时间:2019-08-13 04:48:16

标签: docker dockerfile

我是Docker的新手,我正在尝试制作一个简单的Dockerfile,该文件结合了阿尔卑斯山的图像和python的图像。

这是Dockerfile的样子:

FROM alpine

RUN apk update &&\
    apk add -q --progress \
        bash \
        bats \
        curl \
        figlet \
        findutils \
        git \
        make \
        mc \
        nodejs \
        openssh \
        sed \
        wget \
        vim

ADD ./src/ /home/src/

WORKDIR /home/src/

FROM python:3.7.4-slim

运行时:

docker build -t alp-py .

图像正常构建。

我跑步时

docker run -it alp-py bash

我可以访问bash,但是当我cd到/ home /和ls时,它显示了一个空目录:

root@5fb77bbc81a1:/# cd home
root@5fb77bbc81a1:/home# ls
root@5fb77bbc81a1:/home#

我已经尝试将ADD更改为COPY,并且还尝试:

CPOY . /home/src/

但没有任何效果。

我在做什么错?我想念什么吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

没有“合并2张图像”之类的东西。您应该将映像视为不同的虚拟机(仅出于理解概念的目的-因为它们不仅限于此)。您无法将它们组合在一起。

在您的示例中,您可以直接从python映像开始并在其之上安装所需的工具:

FROM python:3.7.4-slim

RUN apt update &&\
    apt-get install -y \
        bash \
        bats \
        curl \
        figlet \
        findutils \
        git \
        make \
        mc \
        nodejs \
        openssh \
        sed \
        wget \
        vim

ADD ./src/ /home/src/

WORKDIR /home/src/

我没有测试所有软件包是否都可用,所以您可能需要做一些研究才能发现所有软件包,以防万一出错。

在Dockerfile中使用2 FROM语句时,您将创建一个多阶段构建。如果您要创建一个不包含源代码但仅包含产品二进制文件的最终映像,这很有用(第一阶段构建源代码,第二阶段仅复制第一个二进制文件)。