今すぐに導入する機会はなさそうだけど,前から気になってた Alpine Linux の情報が欲しくて「Alpine Linux Meetup Tokyo #1」に参加してきた.簡単にメモっておこうと思う.
alpine-linux-meetup.connpass.com
アイスブレイク @tori_cluster
最初は Alpine Linux とは何?という話で,参考になるドキュメントの紹介が中心だった.個人的に Alpine Linux 未経験で勉強会に参加したため,基礎的な話を最初に聞けて凄く助かった.
- index | Alpine Linux
- docker-alpine :: viewdocs.io
- Alpine Linux package management - Alpine Linux
- musl libc
Docker Hub を見ると alpine
と gliderlabs/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 があったらしく,流行ってる感じあるなー!なんて思ったりした.