【问题标题】:How to use the installed packages from a built image in a new one on docker containers?如何在 docker 容器的新镜像中使用已安装的软件包?
【发布时间】:2021-09-14 06:26:02
【问题描述】:

我是 docker 的新手,我花了几天时间尝试执行以下操作但没有成功:

我想从“Dockerfile 1”创建一个镜像,以便使用在“Dockerfile 2”上构建另一个镜像时安装的软件包,以下是重现问题的最小设置

第一步,从以下 Dockerfile(Dockerfile 1)创建镜像

FROM ubuntu:18.04
RUN apt update -y; apt upgrade -y; apt install maven -y

第2步,标记构建的图像

docker tag my_custom_image:1-0 external/my_custom_image:1.0

第三步,推送构建好的镜像

docker push external/my_custom_image:1.0

我希望以下方法可行:

第 4 步,从 Dockerfile 2 中的构建镜像创建一个新镜像

FROM external/my_custom_image:1.0
RUN mvn --version

主要思路是在第二个镜像中能够使用从第一个镜像安装的maven包,但是第二个Dockerfile显示找不到mvn命令。

【问题讨论】:

    标签: docker docker-compose dockerfile ubuntu-18.04 docker-registry


    【解决方案1】:

    ubuntu:18.04 中没有mvn 包可用,应使用maven 代替。

    所以,您的 Dockerfile 1 应该如下所示:

    FROM ubuntu:18.04
    RUN apt update -y; apt upgrade -y; apt install maven -y
    

    此外,给定的 apt 命令行返回:

    E: Unable to locate package mvn
    The command '/bin/sh -c apt update -y; apt upgrade -y; apt install mvn -y' returned a non-zero code: 100
    

    这意味着甚至无法使用此命令构建图像。

    编辑

    给定同一目录中的以下文件:

    Dockerfile1

    FROM ubuntu:18.04
    RUN apt update -y; apt upgrade -y; apt install maven -y
    

    Dockerfile2

    FROM from-test-docker-file-1
    RUN mvn --version
    

    并运行这些命令:

    docker build -t from-test-docker-file-1 -f Dockerfile1 .
    docker build -t from-test-docker-file-2 -f Dockerfile2 . 
    

    应该为第二个 docker build 命令返回以下内容:

    Sending build context to Docker daemon  3.072kB
    Step 1/2 : FROM from-test-docker-file-1
     ---> 821db5f3628e
    Step 2/2 : RUN mvn --version
     ---> Running in 57b94babccca
    Apache Maven 3.6.0
    Maven home: /usr/share/maven
    Java version: 11.0.11, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
    Default locale: en_US, platform encoding: ANSI_X3.4-1968
    OS name: "linux", version: "5.11.0-34-generic", arch: "amd64", family: "unix"
    

    【讨论】:

    • 感谢您指出错字,但是,我仍然面临这个问题,有什么建议吗?
    • 检查我的编辑,我添加了一个工作示例
    • 非常感谢@csenga
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 2018-03-06
    相关资源
    最近更新 更多