最近开发了一个应用,使用centos7作为基础容器,然后把应用部署在里面,最终的大小是298MB
后来了解到最近很流行的alpine容器,体积只有5.5MB, 自带包管理器, 非常轻量,所以决定把alpine作为基础容器
包管理
关于包管理,alpine使用的是apk, 安装包的话很简单
apk add xxxx
如果在dockerfile中使用,为了节省镜像大小,可以使用
apk add --no-cache xxx
遇到的坑
1.运行Go程序报 /bin/sh: not find
我在centos7上编译的go程序,在alpine运行时会报错,在网上查了一下,是因为alpine没有lib64这个目录,所以需要创建一下,并链接libc库
mkdir /lib64 ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
2.在部署容器时,不知道运行容器的宿主机时区,没办法在构建容器时指定时区
在docker run 的时候 指定挂载宿主机的时区信息
docker run -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro
最后完整部署好以后,容器大小从298MB缩小到43.5MB, 接近7倍的大小,效果立竿见影

发表回复