āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻĄāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦā§āĻ¸ āĻāĻŽā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯ā§ āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻ˛ā§āĻĄāĻā§āĻ˛āĻŋ āĻāĻ°āĻ āĻā§āĻ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻ˛ā§āĻĄ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§āĻ°ā§āĻ¤āĻ¤āĻ° āĻšāĻŦā§āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĒāĻžāĻāĻĨāĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻŋ:
- āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻ˛ā§āĻĄ āĻ āĻ¨ā§āĻ āĻ§ā§āĻ° āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§
- āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŦāĻŋ āĻŦāĻĄāĻŧ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§
- āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻˇā§āĻ
- āĻāĻŦāĻ āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻāĻŋ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻ¤ā§āĻ°ā§āĻāĻŋāĻ° āĻāĻžāĻ°āĻŖ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻāĻ¸ā§āĻ¨ āĻĻā§āĻāĻŋ āĻā§āĻ¨ āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ¨āĻ āĻĒāĻžāĻāĻĨāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤
āĻā§āĻ¨ āĻŽāĻžāĻ¨ā§āĻˇ āĻāĻ˛ā§āĻĒāĻžāĻāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ?
āĻāĻ¸ā§āĻ¨ āĻ§āĻ°ā§ āĻ¨āĻŋāĻ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŦāĻŋāĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° gcc āĻĻāĻ°āĻāĻžāĻ° āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻ¤āĻŋ āĻāĻŦāĻ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻāĻŋāĻ¤ā§āĻ°ā§āĻ° āĻāĻāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻŦāĻ¨āĻžāĻŽ āĻāĻŦā§āĻ¨ā§āĻā§ 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
āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨, āĻāĻ˛ā§āĻĒāĻžāĻāĻ¨ā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻ āĻ¨ā§āĻ āĻā§āĻāĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻāĻ¨ āĻāĻŋāĻ¸āĻŋāĻ¸āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻŦā§āĻ¨ā§āĻā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°āĻŋ:
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/*
āĻ¨āĻŋāĻā§āĻāĻ¤ āĻĄāĻāĻžāĻ°āĻĢāĻžāĻāĻ˛ āĻ˛ā§āĻāĻž āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻ¸ā§āĻ¯ā§āĻā§āĻ° āĻŦāĻžāĻāĻ°ā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻ¸āĻŽāĻžāĻŦā§āĻļā§āĻ° āĻāĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻāĻ°āĻŋ:
$ 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
āĻāĻŽāĻ°āĻž āĻāĻ˛āĻĒāĻžāĻāĻ¨ (āĻĄāĻāĻžāĻ°āĻĢāĻžāĻāĻ˛) āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻŋ:
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 āĻ¸ā§āĻā§āĻ¨ā§āĻĄ āĻāĻŦāĻ āĻāĻŦāĻŋāĻ° āĻāĻāĻžāĻ° 105MB āĻŦāĻ¨āĻžāĻŽ 150MBā§ˇ āĻāĻāĻž āĻŦā§āĻļ āĻāĻžāĻ˛!
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻĒāĻžāĻāĻĨāĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋāĻ¤ā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻ¤āĻāĻž āĻā§āĻ˛āĻžāĻĒā§ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤
āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻŦāĻŋ
āĻĒāĻžāĻāĻĨāĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻĒāĻžāĻ¨ā§āĻĄāĻž āĻāĻŦāĻ āĻŽā§āĻ¯āĻžāĻāĻĒā§āĻ˛āĻāĻ˛āĻŋāĻŦ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻ āĻ¤āĻāĻŦ, āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšāĻ˛ āĻāĻ āĻĄāĻāĻžāĻ°āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨-āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻāĻŋāĻ¤ā§āĻ° āĻ¨ā§āĻāĻ¯āĻŧāĻž:
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
āĻāĻŽāĻ°āĻž 363MB āĻāĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ° āĻĒāĻžāĻāĨ¤
āĻāĻŽāĻ°āĻž āĻāĻŋ āĻāĻ˛ā§āĻĒāĻžāĻāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ°āĻ āĻāĻžāĻ˛ āĻāĻ°āĻŦ? āĻāĻ¸ā§āĻ¨ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ:
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
āĻāĻŋ āĻ¯āĻžāĻā§āĻā§
āĻāĻ˛ā§āĻĒāĻžāĻāĻ¨ āĻāĻžāĻāĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻ¨āĻž
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāĻāĻŋ āĻĻā§āĻā§āĻ¨, āĻ¯āĻž āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻāĻŋ matplotlib-3.1.2-cp38-cp38-manylinux1_x86_64 āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĨ¤whl.
āĻāĻāĻŋ āĻāĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ. āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻ¸ā§āĻ¤ā§āĻ° `matplotlib-3.1.2.tar āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĨ¤gz` āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻŽāĻžāĻ¨ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻ¨āĻž
āĻā§āĻ¨? āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ āĻ¸āĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° GNU āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ (glibc) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ¯āĻž āĻāĻ¸āĻ˛ā§ āĻĒāĻžāĻāĻĨāĻ¨ āĻ¸āĻš āĻ¸āĻŋ-āĻ¤ā§ āĻ˛ā§āĻāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ˛āĻĒāĻžāĻāĻ¨ `musl` āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŦāĻ āĻ¯ā§āĻšā§āĻ¤ā§ āĻ¸ā§āĻ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋ `glibc`-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¸ā§āĻā§āĻ˛āĻŋ āĻā§āĻŦāĻ˛ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ¨āĻ¯āĻŧāĨ¤
āĻ āĻ¤āĻāĻŦ, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻžāĻāĻĨāĻ¨ āĻĒā§āĻ¯āĻžāĻā§āĻā§ C āĻ¤ā§ āĻ˛ā§āĻāĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻĄ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻš, āĻšā§āĻ¯āĻžāĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŽāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻā§āĻāĻāĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻ¨āĻŋāĻā§āĻā§ āĻ¸āĻāĻāĻ˛āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻĒāĻžāĻ:
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
āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻā§ ...
... ā§¨ā§Ģ āĻŽāĻŋāĻ¨āĻŋāĻ ā§Ģā§ āĻ¸ā§āĻā§āĻ¨ā§āĻĄ! āĻāĻ° āĻāĻŦāĻŋāĻ° āĻ¸āĻžāĻāĻ 25MBāĨ¤
āĻāĻ˛āĻĒāĻžāĻāĻ¨-āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻāĻŋāĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻ
āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻ¯āĻŧ, āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻāĻžāĻ°ā§ āĻŦāĻĄāĻŧ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻ¨āĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻŽāĻžāĻŦā§āĻļā§āĻ° āĻāĻāĻžāĻ° āĻāĻŽāĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻāĻžāĻ āĻ¸āĻŦ āĻ¨āĻž!
āĻāĻ˛ā§āĻĒāĻžāĻāĻ¨ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻŦāĻžāĻ āĻ¸ā§āĻˇā§āĻāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§
- āĻ¤āĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻāĻāĻžāĻŦā§, musl glibc-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻ āĻ¨ā§āĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸ā§āĻˇā§āĻāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ āĻĒā§āĻ°ā§āĻ¤āĻŋāĻāĻ° āĻšāĻŦā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĻā§āĻāĻž āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§:
- āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻāĻāĻāĻŋ āĻā§āĻ āĻĨā§āĻ°ā§āĻĄ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻāĻāĻžāĻ° āĻāĻā§, āĻ¯āĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻ¤ā§āĻ°ā§āĻāĻŋ - āĻāĻŋāĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻāĻŋ āĻā§āĻāĻā§ āĻĒā§āĻ¯āĻŧā§āĻā§āĻ¨
āĻĒāĻžāĻāĻĨāĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ§ā§āĻ° āĻšāĻ¯āĻŧ āĻāĻžāĻ°āĻŖ āĻ¯ā§āĻāĻžāĻŦā§ musl āĻŽā§āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°ā§ (glibc āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž)āĨ¤ - āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻāĻāĻ¨
āĻ¤āĻžāĻ°āĻŋāĻ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻā§āĻā§
āĻ¨āĻŋāĻļā§āĻāĻ¯āĻŧ āĻāĻ āĻ¤ā§āĻ°ā§āĻāĻŋāĻā§āĻ˛āĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻāĻ°āĻ āĻāĻ¤āĻā§āĻ˛āĻŋ āĻĨāĻžāĻāĻŦā§ āĻā§ āĻāĻžāĻ¨ā§āĨ¤
āĻĒāĻžāĻāĻĨāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻāĻŦāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦāĻĄāĻŧ āĻāĻŦāĻ āĻĻā§āĻ°ā§āĻ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¨āĻŋāĻ¯āĻŧā§ āĻŦāĻŋāĻ°āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻ¨āĻž āĻāĻžāĻ¨, āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻ¤ā§āĻ°ā§āĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨, āĻ¤āĻŦā§ āĻŦā§āĻ¸ āĻāĻŽā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ˛āĻĒāĻžāĻāĻ¨ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com