Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Alpine Linux ノススメ

y13i
October 12, 2016

Alpine Linux ノススメ

y13i

October 12, 2016
Tweet

More Decks by y13i

Other Decks in Technology

Transcript

  1. ϊεεϝ
    ΞΠϨοτגࣜձࣾcloudpack ࢁޱ༩ྗ
    @ Web Tech Tokyo #1ʢDocker Tips ڞ༗ձʣ
    2016-10-12

    View full-size slide

  2. ୭ʁ
    • ໊લ: ࢁޱ ༩ྗʢ΍·͙ͪ ΑΓ͖ʣ
    • ۈ຿ઌ: ΞΠϨοτגࣜձࣾ cloudpackࣄۀ෦
    • ޷͖ͳݴޠ: Ruby, JavaScript
    • URL: https://y13i.com/

    View full-size slide

  3. Alpine Linux ͬͯʁ
    • ܰྔ Linux
    • ίϯςφʔ༻ OS ͱͯ͠ Docker ͱ૬ੑ͕ྑ͘ɺ࠷ۙ
    Α͘ར༻͞Ε͍ͯΔ
    • BusyBox ͕ϕʔεʹͳ͍ͬͯΔ
    • γΣϧ͸ ash
    • ύοέʔδ؅ཧ͸ apk

    View full-size slide

  4. ͍ܰʂ
    Image Size
    Ubuntu 127.1 MB
    CentOS 196.8 MB
    Alpine 4.8 MB
    BusyBox 1.1 MB

    View full-size slide

  5. ͲΕ͘Β͍͍ܰͷ͔ʁ
    • `docker pull` ͯ͠ hello world ͢Δ·Ͱ͔͔Δ࣌ؒΛܭ
    ଌͯ͠Έͨ vs Ubuntu
    ~ time docker run -t --rm ubuntu:latest /bin/bash -c 'echo "Hello world."'
    Unable to find image 'ubuntu:latest' locally
    latest: Pulling from library/ubuntu
    cad964aed91d: Pull complete
    3a80a22fea63: Pull complete
    50de990d7957: Pull complete
    61e032b8f2cb: Pull complete
    9f03ce1741bf: Pull complete
    Digest: sha256:28d4c5234db8d5a634d5e621c363d900f8f241240ee0a6a978784c978fe9c737
    Status: Downloaded newer image for ubuntu:latest
    Hello world.
    17.23 real 0.04 user 0.04 sys
    ~ time docker run -t --rm alpine:latest /bin/ash -c 'echo "Hello world."'
    Unable to find image 'alpine:latest' locally
    latest: Pulling from library/alpine
    c0cb142e4345: Pull complete
    Digest: sha256:ca7b185775966003d38ccbd9bba822fb570766e4bb69292ac23490f36f8a742e
    Status: Downloaded newer image for alpine:latest
    Hello world.
    6.07 real 0.02 user 0.02 sys

    View full-size slide

  6. ܰ͞ͷͻΈͭ
    • `ls -la /bin` ͯ͠ΈΑ͏
    ~ docker run -t --rm alpine:latest /bin/ash -c 'ls -la /bin'
    total 796
    drwxr-xr-x 2 root root 4096 Sep 22 23:30 .
    drwxr-xr-x 24 root root 4096 Oct 11 05:59 ..
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 ash -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 base64 -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 bbconfig -> /bin/busybox
    -rwxr-xr-x 1 root root 805032 Aug 12 14:38 busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 cat -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 catv -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 chgrp -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 chmod -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 chown -> /bin/busybox
    ...
    ~ docker run -t --rm alpine:latest /bin/ash -c 'ls -la /usr/bin'
    total 188
    drwxr-xr-x 2 root root 4096 Sep 22 23:30 .
    drwxr-xr-x 7 root root 4096 Sep 22 23:30 ..
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 [ -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 [[ -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 awk -> /bin/busybox
    lrwxrwxrwx 1 root root 12 Sep 22 23:30 basename -> /bin/busybox
    ...

    View full-size slide

  7. BusyBox ͱԿ͕ҧ͏ʁ
    • BusyBox ͸σʔλϘϦϡʔϜίϯςφʔʢଞͷί
    ϯςφʔ͔ΒϘϦϡʔϜͱͯ͠Ϛ΢ϯτͯ͠ɺϑΝ
    ΠϧΛอ࣋͢Δ͚ͩͷίϯςφʔʣͱͯ͠Α͘࢖Θ
    ΕΔ
    • BusyBox ͰԿ͔Λ࣮ߦ͢Δ؀ڥΛ༻ҙ͢Δͷ͸େ
    ม……
    • Alpine ʹ͸ apk ͕͋Δʂ

    View full-size slide

  8. apk ͸͍Ζ͍ΖḿΔ
    • `--no-cache` Ͱ Dockerfile Λॻ͘ͷ͕ḿΔʢapt,
    yum ͸Πϯετʔϧޙʹ໌ࣔతʹΩϟογϡ࡟আͷ
    εςοϓ͕ඞཁʣɺͦͯ͠ૣ͍
    ~ time docker run -t --rm ubuntu:latest /bin/bash -c "apt update && apt -y install ruby && apt clean && ruby --version"
    ...
    ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
    44.45 real 0.03 user 0.05 sys
    ~ time docker run -t --rm alpine:latest /bin/ash -c "apk --no-cache add ruby && ruby --version"
    ...
    ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux-musl]
    6.47 real 0.01 user 0.01 sys
    ~ time docker run -t --rm centos:latest /bin/bash -c "yum -y install ruby && yum clean all && ruby --version"
    ...
    ruby 2.0.0p598 (2014-11-13) [x86_64-linux]
    12.23 real 0.02 user 0.05 sys

    View full-size slide

  9. apk ͸͍Ζ͍ΖḿΔ
    Ruby Node.js Redis
    Ubuntu 2.3.1 4.2.6 3.0.6
    CentOS (with
    epel)
    2.0.0 6.7.0 2.8.19
    Alpine 2.3.1 6.2.0 3.2.0
    • ύοέʔδͷόʔδϣϯ͕݁ߏ৽͍͠
    ※͢΂ͯ2016-10-12࣌఺Ͱͷlatest

    View full-size slide

  10. ΋͏طʹ݁ߏͳਓؾΈ͍ͨ
    • ೔ຊޠͷ৘ใ΋͔ͳΓώοτ͢Δ
    • Docker Hub Ͱ Alpine ϕʔεͷΠϝʔδΛݟΔ͜ͱ
    ΋ଟ͘ͳͬͨ
    • `ruby:2.3.1-alpine`
    • `nginx:mainline-alpine`
    • ʢ৽઱ຯʹ͚ܽΔωλͰ͢Έ·ͤΜ…ʣ

    View full-size slide

  11. ͷ
    ͬ͘͟Γ঺հͰͨ͠

    View full-size slide