kakakakakku blog

Weekly Tech Blog: Keep on Learning!

軽さは正義!を口癖にしよう /「Alpine Linux Meetup Tokyo #1」に参加した

今すぐに導入する機会はなさそうだけど,前から気になってた Alpine Linux の情報が欲しくて「Alpine Linux Meetup Tokyo #1」に参加してきた.簡単にメモっておこうと思う.

alpine-linux-meetup.connpass.com

アイスブレイク @tori_cluster

最初は Alpine Linux とは何?という話で,参考になるドキュメントの紹介が中心だった.個人的に Alpine Linux 未経験で勉強会に参加したため,基礎的な話を最初に聞けて凄く助かった.

Docker Hub を見ると alpinegliderlabs/alpine と似たリポジトリが2個公開されているけど,基本的には全く同じで,Fastly 経由で配信されている点と,apk-install コマンドがバンドルされている点が主な違いだと説明されていた.特に困らないなら gliderlabs/alpine で良いのでは?とのことだった.

詳しくは docker-alpine :: viewdocs.io - Build に書かれている.実際に確認してみたら,確かに gliderlabs/alpine にしか apk-install コメンドがバンドルされていなかった.

alpine

$ docker run -it alpine sh
/ # which apk-install
/ #

gliderlabs/alpine

$ docker run -it gliderlabs/alpine sh
/ # which apk-install
/usr/sbin/apk-install

Alpine Linux では apk というパッケージマネージャを使う.--no-cache オプションを付けるとインストール後のゴミが残らないけど,その辺りを良しなにやってくれるのが apk-install とのこと.

軽量イメージ時代を生きるためのAlpine Linux @stormcat24

FRESH! で Alpine Linux(Amazon ECS ベース)を導入した話で,ここまでの規模で実戦投入されてるのは普通に凄いなと思った.スライドの「ダイエット結果」のページに載ってるけど,動いてるコンテナのサイズが本当に小さくてビビる.運用を考えるとまさに「軽さは正義!」だなー.

また nginx や Redis などオフィシャルのイメージも既に Alpine が使われている話や,bash は入ってなくて ash がデフォルトになっている話なども勉強になった.apk に関しては apk add --virtual をうまく使えると Dockerfile がシンプルに保てそう.「産業廃棄物」っていう表現も秀逸w

Entrykit に関しては Docker Meetup でも紹介されてたし良さそうだなーなんて思いながら聞いていた.

ミニマリストのためのAlpine @tonymorrisjp

貴重なトニーモリス氏の発表を聞くことができた!笑

BlueMix で Docker を動かしたり,BlueMix だと Watson エンジンが動くコグニティブアプリのカタログもあるよという紹介は前フリで,自宅サーバに Alpine Linux を導入して「Apline on Alpine」で試行錯誤したという話だった.徹夜で Alpine に X 環境を構築しようとして挑戦したのにうまく動かなかった話は笑った.会場もドッカーンとウケてたwww

最後にエンタープライズ案件でもインフラをスクラップアンドビルドできる Docker にはメリットがあると言っていて,ここまで技術の本質を理解した人がプロジェクトマネージャなら良い案件になりそうだなと SIer 時代を思い出しながら考えていた.

Amazon ESC + CodeCommit @riywo

資料を探したけど公開されてなさそうだった.デモ中心の LT で CodeCommit と Amazon ESC を連携して,コードをコミットしたら流れるようにコンテナをデプロイできるという話.ECS 普通に良さそうだし,Docker 使うことになったら検証しようと思ってる.

軽く Alpine Linux を動かしてみた

本当に5MB 未満...!

$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
alpine               latest              d7a513a663c1        3 weeks ago         4.798 MB
gliderlabs/alpine    latest              8944964f99f4        3 weeks ago         4.798 MB

全てのコマンドは単一バイナリ /bin/busybox のシンボリックリンクになっていた.

$ docker run -it gliderlabs/alpine sh
/ # ls -l /bin | head -n 20
total 792
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 ash -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 base64 -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 bbconfig -> /bin/busybox
-rwxr-xr-x    1 root     root        809128 Dec 16 08:00 busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 cat -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 catv -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 chgrp -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 chmod -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 chown -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 conspy -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 cp -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 cpio -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 date -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 dd -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 df -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 dmesg -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 dnsdomainname -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 dumpkmap -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Apr  1 18:56 echo -> /bin/busybox

apk で nginx をインストールしてみた.

$ docker run -it gliderlabs/alpine sh
/ # apk add --update nginx
fetch http://alpine.gliderlabs.com/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
fetch http://alpine.gliderlabs.com/alpine/v3.3/community/x86_64/APKINDEX.tar.gz
(1/3) Installing nginx-initscripts (1.8.0-r0)
Executing nginx-initscripts-1.8.0-r0.pre-install
(2/3) Installing pcre (8.38-r0)
(3/3) Installing nginx (1.8.1-r0)
Executing busybox-1.24.1-r7.trigger
OK: 6 MiB in 14 packages

まとめ

カジュアルな雰囲気で楽しく参加できて良かった.Alpine Linux の凄さはまさに「軽さ」で,発表を聞きながらローカルで alpine を動かしてみてそう思った.apk って聞くと Android のことを想像しちゃうから少し困りそうだけど,今後も動向を追っていく!あと先週末に福岡で開催された「コンテナ型仮想化の情報交換会」でも Alpine の LT があったらしく,流行ってる感じあるなー!なんて思ったりした.

tapira.hatenablog.com

関連記事

blog.stormcat.io