如何在 docker 容器上的新镜像中使用构建镜像中安装的包?
How to use the installed packages from a built image in a new one on docker containers?
我是 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
第三步,推送构建镜像
docker push external/my_custom_image:1.0
我希望以下方法可行:
第 4 步,从 Dockerfile 2 中的构建镜像创建新镜像
FROM external/my_custom_image:1.0
RUN mvn --version
主要思路是在第二个镜像中可以使用第一个镜像安装的maven包,但是第二个Dockerfile显示找不到mvn命令
没有 mvn package available in ubuntu:18.04, maven 应该改用。
因此,您的 Dockerfile 1 应该如下所示:
FROM ubuntu:18.04
RUN apt update -y; apt upgrade -y; apt install maven -y
此外,给定的 apt 命令行 returns 是这样的:
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 构建命令应该 return 以下内容:
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"
我是 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
第三步,推送构建镜像
docker push external/my_custom_image:1.0
我希望以下方法可行:
第 4 步,从 Dockerfile 2 中的构建镜像创建新镜像
FROM external/my_custom_image:1.0
RUN mvn --version
主要思路是在第二个镜像中可以使用第一个镜像安装的maven包,但是第二个Dockerfile显示找不到mvn命令
没有 mvn package available in ubuntu:18.04, maven 应该改用。
因此,您的 Dockerfile 1 应该如下所示:
FROM ubuntu:18.04
RUN apt update -y; apt upgrade -y; apt install maven -y
此外,给定的 apt 命令行 returns 是这样的:
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 构建命令应该 return 以下内容:
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"