Alpine Linux แฎแจแแ แแ แ แแแแแแแแแ แแแฃแแแ, แ แแแแ แช แกแแแแแแกแ แกแฃแ แแแ Docker-แแกแแแแก. แแแฃแแแแแแแ, แ แแ Alpine-แแก แแแแแงแแแแแ แแฅแแแแก แแแแกแขแ แฃแฅแชแแแแก แฃแคแ แ แแแขแแ แแก แแแฎแแแก แแ แแจแแแแแแแแแก แแ แแชแแกแก แฃแคแ แ แกแฌแ แแคแแ.
แแแแ แแ แแฃ แแงแแแแแ Alpine Linux-แก แแแแแแแก แแแแแแแชแแแแแกแแแแก, แแแจแแ แแก:
- แจแแแก แจแแแแแแแก แแแแ แแ แแแแแแแก
- แฎแแแก แแฅแแแแก แกแฃแ แแแแแก แฃแคแ แ แแแแก
- แแแ แแแ แแ แแก
- แแ แแแแแก, แแแแ แจแแแซแแแแ แแแแแแฌแแแแก แจแแชแแแแแแ แแแจแแแแแก แแ แแก
แแแแ แแแแฎแแ, แ แแขแแ แแ แแก แ แแแแแแแแแแฃแแ Alpine, แแแแ แแ แ แแขแแ แแ แฃแแแ แแแแแแงแแแแ แแแ Python-แแแ แแ แแแ.
แ แแขแแ แฃแ แฉแแแแ แฎแแแฎแ แแแแฃแ แก?
แแแแฃแจแแแ, แ แแ แฉแแแ แแแญแแ แแแแ gcc, แ แแแแ แช แฉแแแแ แแแแฏแแก แแแฌแแแ แแ แแแแแแ แจแแแแแแ แแ Alpine Linux แแ Ubuntu 18.04 แแแแกแขแ แฃแฅแชแแแก แกแแฉแฅแแ แแกแ แแ แแแแแกแแฎแฃแแแแแก แกแแแแแแ แแแแแก แแแแแกแแแ แแกแแ.
แฏแแ แแแแแแแฌแแ แแ แแ แ แกแฃแ แแแ แแ แจแแแแแแ แแ แแแแ แแแแแแ:
$ docker pull --quiet ubuntu:18.04
docker.io/library/ubuntu:18.04
$ docker pull --quiet alpine
docker.io/library/alpine:latest
$ docker image ls ubuntu:18.04
REPOSITORY TAG IMAGE ID SIZE
ubuntu 18.04 ccc6e87d482b 64.2MB
$ docker image ls alpine
REPOSITORY TAG IMAGE ID SIZE
alpine latest e7d92cdc71fe 5.59MB
แ แแแแ แช แฎแแแแแ, Alpine-แแก แกแแแแแแกแ แกแฃแ แแแ แแแชแแแแแแ แแชแแ แแ. แแแแแ แแฎแแ แแชแแแแ แแแแแแกแขแแแแ แแ gcc แแ แแแแแฌแงแแ Ubuntu-แแ:
FROM ubuntu:18.04
RUN apt-get update &&
apt-get install --no-install-recommends -y gcc &&
apt-get clean && rm -rf /var/lib/apt/lists/*
แกแ แฃแแงแแคแแแ Dockerfile-แแก แแแฌแแ แ แแ แกแขแแขแแแก แคแแ แแแแแก แกแชแแแแแแ.
แแแแแ แแแแแแแแ แจแแแ แแแแก แกแแฉแฅแแ แ:
$ time docker build -t ubuntu-gcc -f Dockerfile.ubuntu --quiet .
sha256:b6a3ee33acb83148cd273b0098f4c7eed01a82f47eeb8f5bec775c26d4fe4aae
real 0m29.251s
user 0m0.032s
sys 0m0.026s
$ docker image ls ubuntu-gcc
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-gcc latest b6a3ee33acb8 9 seconds ago 150MB
แแแแแแก แแแแแแ แแแ Alpine-แกแแแแก (Dockerfile):
FROM alpine
RUN apk add --update gcc
แฉแแแ แแแฌแงแแแ, แแฃแงแฃแ แแแ แจแแแ แแแแก แแ แแกแ แแ แแแแแก:
$ time docker build -t alpine-gcc -f Dockerfile.alpine --quiet .
sha256:efd626923c1478ccde67db28911ef90799710e5b8125cf4ebb2b2ca200ae1ac3
real 0m15.461s
user 0m0.026s
sys 0m0.024s
$ docker image ls alpine-gcc
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine-gcc latest efd626923c14 7 seconds ago 105MB
แ แแแแ แช แแแแแแ แแแ, แแแแฃแ แแ แแแคแฃแซแแแแฃแแ แกแฃแ แแแแแ แฃแคแ แ แกแฌแ แแคแแ แแ แแแแแแ แแ แฃแคแ แ แแชแแ แแ: 15 แฌแแแ 30-แแก แแแชแแแแ แแ แแแแแกแแฎแฃแแแแแก แแแแแ 105 แแ 150 แแ-แแก แฌแแแแแฆแแแแ. แกแแแแแแ แแแ แแแ!
แแแแ แแ แแฃ แแแแแแแก แแแแแแแชแแแก แจแแฅแแแแแ แแแแแแแแ, แแแจแแ แงแแแแแคแแ แ แแ แช แแกแ แแแ แแแกแคแแ แแ.
แแแแแแแก แกแฃแ แแแ
แแแแแแแก แแแแแแแชแแแแ แฎแจแแ แแ แแงแแแแแแ แแแแแแก แแ matplotlib-แก. แแแแขแแ, แแ แแ แแแ แแแแขแแ แแแแแแฆแแ แแคแแชแแแแฃแ แ Debian-แแ แแแคแฃแซแแแแฃแแ แกแฃแ แแแ แแ Dockerfile-แแก แแแแแงแแแแแแ:
FROM python:3.8-slim
RUN pip install --no-cache-dir matplotlib pandas
แแแแแ แจแแแแแ แแแแ:
$ docker build -f Dockerfile.slim -t python-matpan.
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM python:3.8-slim
---> 036ea1506a85
Step 2/2 : RUN pip install --no-cache-dir matplotlib pandas
---> Running in 13739b2a0917
Collecting matplotlib
Downloading matplotlib-3.1.2-cp38-cp38-manylinux1_x86_64.whl (13.1 MB)
Collecting pandas
Downloading pandas-0.25.3-cp38-cp38-manylinux1_x86_64.whl (10.4 MB)
...
Successfully built b98b5dc06690
Successfully tagged python-matpan:latest
real 0m30.297s
user 0m0.043s
sys 0m0.020s
แฉแแแ แแแฆแแแ แกแฃแ แแแก 363 แแ แแแแแก.
แฃแแแแแกแแ แแแฅแแแแแ Alpine-แแแ? แฒแแแ แแชแแแแ:
FROM python:3.8-alpine
RUN pip install --no-cache-dir matplotlib pandas
$ docker build -t python-matpan-alpine -f Dockerfile.alpine .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM python:3.8-alpine
---> a0ee0c90a0db
Step 2/2 : RUN pip install --no-cache-dir matplotlib pandas
---> Running in 6740adad3729
Collecting matplotlib
Downloading matplotlib-3.1.2.tar.gz (40.9 MB)
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/
tmp/pip-install-a3olrixa/matplotlib/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a3olrixa/matplotlib/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-a3olrixa/matplotlib/pip-egg-info
...
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
The command '/bin/sh -c pip install matplotlib pandas' returned a non-zero code: 1
แ แ แฎแแแแ?
Alpine แแ แฃแญแแ แก แแฎแแ แก แแแ แแแแแก
แแฃ แแแแแแแ แแแแแ แแแแแก, แ แแแแแแช แแแคแฃแซแแแแฃแแแ Debian-แแ, แแแฎแแแ, แ แแ แแก แฉแแแแขแแแ แแแแก matplotlib-3.1.2-cp38-cp38-manylinux1_x86_64.แแแแแ.
แแก แแ แแก แแ แแแแแ แแแ แแแแกแแแแก. Alpine แฉแแแแขแแแ แแแแก แฌแงแแ แแแแก `matplotlib-3.1.2.tar.gz`แ แแแแแ แแก แแ แฃแญแแ แก แแฎแแ แก แกแขแแแแแ แขแก
แ แแขแแ? Linux-แแก แแแกแขแ แแแฃแชแแแแแก แฃแแแขแแกแแแ แแงแแแแแก C แกแขแแแแแ แขแแก แแแแแแแแแแแก GNU แแแ แกแแแก (glibc), แ แแแแแกแแช แคแแฅแขแแแ แแแแ แแแแแฎแแแก C-แจแ แแแฌแแ แแแ แงแแแแ แแ แแแ แแแ, แแแ แจแแ แแก แแแแแแ. แแแแ แแ Alpine แแงแแแแแก `musl`-แก แแ แ แแแแแ แแก แแแแแ แแแ แจแแฅแแแแแแ `glibc`-แกแแแแก, แแกแแแ แฃแแ แแแแ แแ แแ แแก แแแ แแแแขแ.
แแแแขแแ, แแฃ แแงแแแแแ Alpine-แก, แแฅแแแ แฃแแแ แจแแแแแแแแ C-แจแ แแแฌแแ แแแ แงแแแแ แแแแ Python-แแก แแแแแแฃแ แแแแแขแจแ.
แแฐ, แแแแฎ, แแฅแแแ แแแแแฌแแแ แแแซแแแแแ แงแแแแ แแกแแแ แแแแแแแแแแฃแแแแแก แกแแ, แ แแแแแแแช แแแแแ แฃแแแ แจแแแแแแแแ.
แแ แจแแแแฎแแแแแจแ แแแแแฆแแแ แจแแแแแแก:
FROM python:3.8-alpine
RUN apk --update add gcc build-base freetype-dev libpng-dev openblas-dev
RUN pip install --no-cache-dir matplotlib pandas
แแ แแจแแแแแแก แแ แ แกแญแแ แแแแ...
... 25 แฌแฃแแ 57 แฌแแแ! แฎแแแ แกแฃแ แแแแก แแแแแ 851 แแ.
แแแแฃแ แแ แแแคแฃแซแแแแฃแแ แกแฃแ แแแแแแก แจแแฅแแแแก แแแชแแแแแแ แแแขแ แแ แ แกแญแแ แแแแ, แแกแแแ แฃแคแ แ แแแแ แแแแแกแแ แแ แแฅแแแ แแแแแช แฃแแแ แแแซแแแแแ แงแแแแ แแแแแแแแแแฃแแแแ. แแฅแแแ, แ แ แแฅแแ แฃแแแ, แจแแแแซแแแแ แจแแแแชแแ แแ แแกแแแแแแแก แแแแ แแแแแงแแแแแแ
แแก แงแแแแแคแแ แ แแ แแ แแก!
Alpine แจแแแซแแแแ แแแแแแฌแแแแก แแแฃแแแแแแแ แจแแชแแแแแแ แแฃแจแแแแแก แแ แแก
- แแแแ แแฃแแแ, musl แแแแกแแแแแแ glibc-แแแ, แแแแ แแ แแ แแฅแขแแแแจแ แแแแกแฎแแแแแแแแ แแแแ แแ แแแแแแแก แแฌแแแแก. แแ แแฃ แแกแแแ แแ แแแ, แแกแแแ แแแแแ แฃแกแแแแแแแ แแฅแแแแ. แแฅ แแ แแก แ แแแแแแแแแ แแ แแแแแแ, แ แแแแแแช แจแแแซแแแแ แฌแแ แแแแจแแแก:
- Alpine-แก แแแแฃแแแกแฎแแแแแ แแฅแแก แซแแคแแก แแแขแแก แฃแคแ แ แแชแแ แ แแแแ, แ แแแแช แจแแแซแแแแ แแแแแแฌแแแแก
แจแแชแแแแแแ แแแแแแจแ - แแแแแแ แแแ แแแแฎแแแ แแแแแแ แแฆแแแแฉแแแ แแก
แแแแแแแก แแแแแแแชแแแแ แฃแคแ แ แแแแแ แแแแก แแแแ, แแฃ แ แแแแ แแแแฌแแแแแก musl แแแฎแกแแแ แแแแก (แแแแกแฎแแแแแแฃแแ glibc-แกแแแ). - แแ แ-แแ แแ แแแแฎแแแ แแแแแ
แแแแแ แจแแชแแแแ แแแ แแฆแแก แคแแ แแแขแแ แแแแกแแก
แ แ แแฅแแ แฃแแแ, แแก แจแแชแแแแแแ แฃแแแ แแแแแกแฌแแ แแแฃแแแ, แแแแ แแ แแแ แแชแแก แแแแแ แ แแแแแแ แแฅแแแแ.
แแ แแแแแแงแแแแ แแแแฃแ แ แกแฃแ แแแแแ แแแแแแแกแแแแก
แแฃ แแ แแกแฃแ แ แจแแฌแฃแฎแแแ แแแแ แแ แแ แซแแแ แแแแแแแแแแแ, แแแแแแแแแแฃแแแแแแแกแ แแ แแแขแแแชแแฃแ แ แจแแชแแแแแแแก แซแแแแแจแ, แแ แแแแแแงแแแแ Alpine Linux, แ แแแแ แช แกแแแแแแกแ แกแฃแ แแแ.
แฌแงแแ แ: www.habr.com