Docker 読書メモ
なぜか
流れでRancher JPに参加してみたら、とっても楽しそうなサービスだった。しかし、私はk8sどころかコンテナすら触ったことなかったため、さっそく前に買ってたけど読んでなかったオライリーさんでお勉強スタート
勉強BGM
友人に勧められたBUMPの新譜。サブスク解禁になっているので新アルバムもまるっとApple Musicで聞けます。Alexaとも連携できるようになったし快適快適
なんでオライリー
とりあえずオライリーを1冊写経しといたらなんとかなるっていう経験則。あとinterop2019の会場でTシャツとトートバックにつられました。k8sも買いました
https://www.oreilly.co.jp/books/9784873117768
早速3章でつまずく
写経しているとうまくいかないところが
3.3 Dockerfileからのイメージの構築のP.25
FROM debian:wheezy
RUN apt-get update && apt-get install -y cowsay fortune
上記をDockerfileに書き込んでbuildしてね。と書いてあるので実行すると、、
Err http://security.debian.org wheezy/updates/main amd64 Packages
上記のエラー。よくわからないけど、wheezyさんが怪しいので「debian wheezy」でググると以下のサイトが一番上に
https://gihyo.jp/admin/clip/01/linux_dt/201903/25
「2019年3月25日 Debian,Wheezyなど古いバージョンをミラーサイトから削除へ」ですって。
初めて知ったのにもうお別れ。Wheezyは何者だったのだろうか。ちなみに私の持ってるオライリーさんは「2019年1月15日 初版第4刷」です。まぁ、しょうがない。第5刷では修正されるでしょう。きっと多分。第二版とかになってそうですけども。
ということで、よくわからないけど、以下のように修正してエラーは出なくなった。wheezyさん消しただけ。
FROM debian
RUN apt-get update && apt-get install -y cowsay fortune
また3章でつまずく
P.27でentrypoint.shを外に出して、Dockerfileから実行するようにするところ。シェルって正規表現とか暗号すぎてよくわかってないのだけれども、写経はできる。
#!/bin/bash
if[ $# -eq 0 ];then
/usr/games/fortune | /usr/games/cowsay
else
/usr/games/cowsay "$@"
fi
if文の締めがfiって。。すごい。finのこと?ひっくり返しただけ?どっち?
buildは通るけど、runすると以下のエラー。
/entrypoint.sh: line 3: syntax error near unexpected token `then'
なるほどよくわからないので、上記文字列をそのまま検索窓にコピペしてググる。
どうやら”記号の前後にスペースが必要”という仕様らしい。
まじかよ。わかんねーよそんなの。
debianのせいなのかもしれませんが、写経が目的なので一旦スルー。どこまで空白を入れたらいいのかわからなかったので試行錯誤して完成したソースがこちら
#!/bin/bash
if [ $# -eq 0 ] ; then
/usr/games/fortune | /usr/games/cowsay
else
/usr/games/cowsay "$@"
fi
if文のところが風通しが良くなりました。これで通った。下図のように名言を教えてくれる牛さんがコンテナに入りました。

シェイクスピアは読んだことありませんが、どういう意味だろ。“おしゃべり野郎は良い働きをしない"とか?
今日はここまで
ハラヘッタ