容器中使用alpine镜像

之前构建 Dockerfile 一般我都是使用 Debian,镜像大小大概在 50多M 左右。然后我最近在阿里云构建镜像时发现阿里云的镜像漏洞扫描扫出来很多漏洞,比如 gcc systemd 等软件包的漏洞。在阿里云打补丁得买他们的服务,300多一个月。

最近我发 alpine 这个操作系统的镜像非常好用,我们来看下他的大小,最小的镜像只有5.5M,而且此操作系统所带的软件包很新,当我构建完之后再去阿里云扫下漏洞发现漏洞是0个。
Alpine Linux是一个基于安全的轻量级Linux发行版,基于 musl libc和 Busybox。其官网https://alpinelinux.org/
alpine 的官网的 slogan 是“Small. Simple. Secure.”,哈哈哈,确实名副其实。

1
2
3
4
5
6
[root@aliyun /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v1 8653d98e78bc 37 hours ago 247 MB
zheyi v1 c5ed70b8eb2d 47 hours ago 89.3 MB
docker.io/python 3.7.2-alpine3.8 e131096e5977 9 days ago 78.6 MB
docker.io/alpine 3.9 caf27325b298 4 weeks ago 5.53 MB

那么在使用alipne 镜像时候,我们需要注意下时区的同步,以及他的软件包管理器 apk 的使用,比如时区,我们需要安装 tzdata 然后同步本地的时区文件信息。

1
2
3
4
5
6
7
8
9
10
11
12
FROM python:3.7.2-alpine3.8
RUN apk update && apk add tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/timezone \
&& touch /var/log/cron.log \
&& pip3 install requests

COPY zheyi.py /opt/zheyi.py

COPY crontab /var/spool/cron/crontabs/root

CMD crond && tail -f /var/log/cron.log