什么是基本图片?
一组文件,加上EXPOSE
端口ENTRYPOINT
和CMD
。
您可以添加文件并基于该基础图像构建新图像,Dockerfile
并以FROM
指令开头:后面提到的图像FROM
是新图像的“基础图像”。
这是否意味着如果我neo4j/neo4j
在FROM
指令中声明,则在运行映像时,neo数据库将自动运行并且可在端口7474的容器中使用?
仅当您不覆盖CMD
和时ENTRYPOINT
。
但是图像本身就足够了:FROM neo4j/neo4j
如果您必须添加与neo4j
的特定用途相关的文件,则可以使用neo4j
。
FROM
可以在一个Dockerfile中多次出现
别:有一项建议无论如何都应删除该“功能”(问题13026)
问题14412提到:
使用倍数FROM
并不是真正的功能,而是一个错误(哦,很好,限制很严格,FROM
Dockerfile中很少有用例)。
使用docker(moby)17.05-ce更新2017年5月(18个月后)。
可以在单个Dockerfile中使用多个FROM 。
请参阅“ Builder模式与多阶段建立在泊坞 ”(由亚历克斯·埃利斯)和PR 31257通过TõnisTiigi。
之前:
构建器模式涉及使用两个Docker映像-一个用于执行构建,另一个用于运送第一个构建的结果,而不会影响第一个映像中的构建链和工具。
后:
通用语法涉及FROM
在Dockerfile中添加其他时间-以最后一条FROM
语句为最终基础映像为准。要复制中间图像的伪像和输出,请使用COPY --from=<base_image_number>
。
Dockerfile的第一部分:
FROM golang:1.7.3 as builder
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 .
相同的(!)Dockerfile的第二部分:
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]
其结果将是两个图像,一个建筑,一个只有所产生的应用程序(很多,很多小)
REPOSITORY TAG IMAGE ID CREATED SIZE
multi latest bcbbf69a9b59 6 minutes ago 10.3MB
golang 1.7.3 ef15416724f6 4 months ago 672MB
FROM
的Dockerfile
。请参阅下面的我编辑过的答案。