Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

ͲΕ͘Β͍͍ܰͷ͔ʁ • `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

Slide 6

Slide 6 text

ܰ͞ͷͻΈͭ • `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 ...

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

ͷ ͬ͘͟Γ঺հͰͨ͠