社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

NewUser • 2 年前 • 314 次点击  

我是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
 
314 次点击  
文章 [ 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"