关于最小镜像
可以直接下载 (pull) 的最小镜像为 alpine
Alpine Linux是一个基于BusyBox和Musl Libc的Linux发行版,其最大的优势就是小,在我写下这篇文章时,最新的版本为 3.12.4,大小只有 2.67M
https://hub.docker.com/_/alpine
alpine 衍生了很多社区版本,基本都以小为主要目的
- docker pull alpine/git 11.39M
- docker pull alpine/socat 3.22M
- docker pull python:rc-alpine 16.54M
实际上alpine并不是最小镜像,还有一个叫做 scratch 的空镜像
scratch 连最基本的 /bin、/usr、/lib、/dev 都没有提供
通过go语言编写一个helloworld并且把代码编译成 二进制 格式,直接使用
CMD “./hello”
会报如下错误,这个是因为scratch镜像连最基本的 sh 都没有提供
上面这种情况,需要对 CMD 的格式进行一些修改
FROM library/golang:alpine as base
COPY hello.go /hello.go
WORKDIR /
RUN go build /hello.go
FROM scratch
COPY --from=base /hello /hello
CMD [ "/hello" ]
通过这种方式构造的镜像,只有 1.94MB