Alpine
Alpine
操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk,可以通过
https://pkgs.alpinelinux.org/packages
网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。
优势
Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境。
优势:
- 镜像下载速度加快
- 镜像安全性提高
- 主机之间的切换更方便
- 占用更少磁盘空间
官方镜像的大小比较
REPOSITORY TAG IMAGE ID VIRTUAL SIZE
alpine latest 4e38e38c8ce0 4.799 MB
debian latest 4d6ce913b130 84.98 MB
ubuntu latest b39b81afc8ca 188.3 MB
centos latest 8efe422e6104 210 MB
DockerFile
如果使用 Alpine 镜像替换 Ubuntu 基础镜像,安装软件包时需要用 apk 包管理器替换 apt 工具
FROM php:5.6-fpm-alpine3.8
ENV LANG=C.UTF-8
#更新软件和必要库
#php扩展编译需要
#安装扩展
ENV REDIS_VERSION=4.2.0
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk update --no-cache \
&& apk add --no-cache vim jq gmp-dev freetype-dev libjpeg-turbo-dev libzip-dev openssl-dev openssh-client yaml-dev gzip \
protobuf-dev linux-headers bash $PHPIZE_DEPS zip \
&& docker-php-ext-configure gmp \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& apk update \
&& docker-php-ext-install bcmath gmp sockets gd pdo_mysql pcntl opcache \
&& pecl install redis-${REDIS_VERSION} && docker-php-ext-enable redis \
&& echo "install redis ok !" \
&& pecl install zip && docker-php-ext-enable zip \
&& pecl clear-cache && apk del $PHPIZE_DEPS \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/apk/* \
/usr/share/doc/* /name/usr/share/man/* /usr/share/info/* \
&& sed -i 's#root:x:0:0:root:/root:/bin/ash#root:x:0:0:root:/root:/bin/bash#g' /etc/passwd
WORKDIR /data/www