使用alpine作为基础容器部署应用

最近开发了一个应用,使用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倍的大小,效果立竿见影


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注