如何创建最小Docker镜像

关于最小镜像

可以直接下载 (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

Send a Message