2016-11-05

alpine - musl libc - toolchain


alpine
By Docker Official Image

docker pull alpine
https://hub.docker.com/r/library/alpine/


A minimal Docker image based on Alpine Linux with a complete package index and only 5 MB in size!
[..]

What is Alpine Linux?
Alpine Linux is a Linux distribution built around musl libc and BusyBox. The image is only 5 MB in size and has access to a  package repository that is much more complete than other BusyBox based images. This makes Alpine Linux a great image base for utilities and even production applications. Read more about Alpine Linux here and you can see how their mantra fits in right at home with Docker images.


1.
tux@slitaz:~$ docker search alpine
NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
alpine                         A minimal Docker image based on Alpine Lin...   1532                 [OK]       
anapsix/alpine-java            Oracle Java 8 (and 7) with GLIBC 2.23 over...   155                  [OK]
frolvlad/alpine-glibc          Alpine Docker image with glibc (~12MB)          50                   [OK]
container4armhf/armhf-alpine   Automatically built base images of Alpine ...   33                   [OK]
mhart/alpine-node-auto         Automated build of mhart/alpine-node – a...     31                   [OK]
[..]


2.
tux@slitaz:~$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
3690ec4760f9: Pull complete
Digest: sha256:1354db23ff5478120c980eca1611a51c9f2b88b61f24283ee8200bf9a54f2e5c
Status: Downloaded newer image for alpine:latest

tux@slitaz:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              latest              baa5d63471ea        13 days ago         4.803 MB


3.
tux@slitaz:~$ docker run -it alpine
docker: Error response from daemon: No command specified.
See 'docker run --help'.

tux@slitaz:~$ docker run -it alpine /bin/sh
/ # cat /etc/os-release

NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.4.4
PRETTY_NAME="Alpine Linux v3.4"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"

/ # apk -V
apk-tools 2.6.7, compiled for x86_64.


4.
/ # apk info
WARNING: Ignoring APKINDEX.167438ca.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.a2e6dac0.tar.gz: No such file or directory
musl
busybox
alpine-baselayout
alpine-keys
zlib
libcrypto1.0
libssl1.0
apk-tools
scanelf
musl-utils
libc-utils


/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
v3.4.5 [http://dl-cdn.alpinelinux.org/alpine/v3.4/main]
v3.4.4-21-g75fc217 [http://dl-cdn.alpinelinux.org/alpine/v3.4/community]
OK: 5973 distinct packages available


5.
/ # apk add build-base
(1/21) Upgrading musl (1.1.14-r12 -> 1.1.14-r13)
(2/21) Installing binutils-libs (2.26-r0)
(3/21) Installing binutils (2.26-r0)
(4/21) Installing gmp (6.1.0-r0)
(5/21) Installing isl (0.14.1-r0)
(6/21) Installing libgomp (5.3.0-r0)
(7/21) Installing libatomic (5.3.0-r0)
(8/21) Installing libgcc (5.3.0-r0)
(9/21) Installing pkgconf (0.9.12-r0)
(10/21) Installing pkgconfig (0.25-r1)
(11/21) Installing mpfr3 (3.1.2-r0)
(12/21) Installing mpc1 (1.0.3-r0)
(13/21) Installing libstdc++ (5.3.0-r0)
(14/21) Installing gcc (5.3.0-r0)
(15/21) Installing make (4.1-r1)
(16/21) Installing musl-dev (1.1.14-r13)
(17/21) Installing libc-dev (0.7-r0)
(18/21) Installing fortify-headers (0.8-r0)
(19/21) Installing g++ (5.3.0-r0)
(20/21) Installing build-base (0.4-r1)
(21/21) Upgrading musl-utils (1.1.14-r12 -> 1.1.14-r13)
Executing busybox-1.24.2-r11.trigger
OK: 156 MiB in 30 packages


/ # du -sh /
159.7M /


6.
/ # exit
tux@slitaz:~$ docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
36eda3500249        alpine              "/bin/sh"           17 minutes ago      Exited (0) 7 seconds ago                       gloomy_brattain

tux@slitaz:~$ docker commit 36eda3 alpine-gcc
sha256:d53ed0816906235716b8ce759ba90f8da9875fd44981d673a648edd562bb6d27

tux@slitaz:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine-gcc          latest              d53ed0816906        6 seconds ago       154 MB
alpine              latest              baa5d63471ea        13 days ago         4.803 MB
tux@slitaz:~$


7.
tux@slitaz:~$ docker run --rm -it alpine-gcc /bin/sh
/ # gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-alpine-linux-musl/5.3.0/lto-wrapper
Target: x86_64-alpine-linux-musl
Configured with: /home/buildozer/aports/main/gcc/src/gcc-5.3.0/configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --build=x86_64-alpine-linux-musl --host=x86_64-alpine-linux-musl --target=x86_64-alpine-linux-musl --with-pkgversion='Alpine 5.3.0' --enable-checking=release --disable-fixed-point --disable-libstdcxx-pch --disable-multilib --disable-nls --disable-werror --disable-symvers --enable-__cxa_atexit --enable-esp --enable-cloog-backend --enable-languages=c,c++,objc,java,fortran,ada --disable-libssp --disable-libmudflap --disable-libsanitizer --enable-shared --enable-threads --enable-tls --with-system-zlib
Thread model: posix
gcc version 5.3.0 (Alpine 5.3.0)


8.
/ # apk info
busybox
alpine-baselayout
alpine-keys
zlib
libcrypto1.0
libssl1.0
apk-tools
scanelf
libc-utils
musl
binutils-libs
binutils
gmp
isl
libgomp
libatomic
libgcc
pkgconf
pkgconfig
mpfr3
mpc1
libstdc++
gcc
make
musl-dev
libc-dev
fortify-headers
g++
build-base
musl-utils


/ # apk info musl
musl-1.1.14-r13 description:
the musl c library (libc) implementation

musl-1.1.14-r13 webpage:
http://www.musl-libc.org/

musl-1.1.14-r13 installed size:
569344


/ # apk info gcc
gcc-5.3.0-r0 description:
The GNU Compiler Collection

gcc-5.3.0-r0 webpage:
http://gcc.gnu.org

gcc-5.3.0-r0 installed size:
65159168


9.
/ # cat /etc/alpine-release
3.4.4

/ # cat /etc/motd
Welcome to Alpine!

The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See .

You can setup the system with the command: setup-alpine

You may change this message by editing /etc/motd.

/ #