有没有一种方法可以将Docker映像合并到一个容器中?

我现在有几个Dockerfile。

一种是Cassandra 3.5,它是 FROM cassandra:3.5

我也有一个用于Kafka的Dockerfile,但是要复杂得多。它是,FROM

java:openjdk-8-fre并且它运行长命令来安装Kafka和Zookeeper。

最后,我有一个用Scala编写的使用SBT的应用程序。

对于该Dockerfile,它是FROM broadinstitute/scala-baseimage,这使我得到了Java 8,Scala

2.11.7和STB 0.13.9。

也许,我不了解Docker的工作原理,但是我的Scala程序将Cassandra和Kafka作为依赖项,出于开发目的,我希望其他人能够简单地使用克隆我的存储库,Dockerfile然后再使用Cassandra,Kafka来构建它。

,Scala,Java和SBT都加入进来,因此它们只能编译源代码。我对此有很多问题。

如何合并这些Dockerfile?我如何简单地将这些东西放进一个环境中?

回答:

您可以使用Docker 1.17中引入的 功能

看看这个:

FROM golang:1.7.3

WORKDIR /go/src/github.com/alexellis/href-counter/

RUN go get -d -v golang.org/x/net/html

COPY app.go .

RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

FROM alpine:latest

RUN apk --no-cache add ca-certificates

WORKDIR /root/

COPY --from=0 /go/src/github.com/alexellis/href-counter/app .

CMD ["./app"]

然后正常构建映像:

docker build -t alexellis2/href-counter:latest

来自:https :

//docs.docker.com/develop/develop-images/multistage-

build/

最终结果是与以前相同的微小生产图像,并大大降低了复杂性。您无需创建任何中间映像,也不需要将任何工件提取到本地系统。

它是如何工作的?第二条FROM指令以alpine:latest图像为基础开始新的构建阶段。COPY –from =

0行仅将之前阶段的构建工件复制到此新阶段。Go SDK和任何中间工件都被保留了下来,没有保存在最终图像中。

以上是 有没有一种方法可以将Docker映像合并到一个容器中? 的全部内容, 来源链接: utcz.com/qa/417085.html

回到顶部