天天看點

Alpine Linux 作業系統 Docker 建構最小鏡像Alpine優勢官方鏡像的大小比較DockerFile

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
           

繼續閱讀