Py学习  »  docker

如何在docker容器上的新映像中使用内置映像中安装的包?

NewUser • 2 年前 • 302 次点击  

我是docker的新手,我花了几天时间试图做以下事情,但都没有成功:

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

步骤1,从以下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

第3步,推送构建的图像

docker push external/my_custom_image:1.0

我希望以下方法可以奏效:

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

FROM external/my_custom_image:1.0
RUN mvn --version

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129829
 
302 次点击  
文章 [ 1 ]  |  最新文章 2 年前
csenga
Reply   •   1 楼
csenga    2 年前

没有 mvn ubuntu中提供的软件包:18.04, 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

来自ubuntu:18.04
运行apt update-y;apt升级-y;apt安装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"