はじめに
- タイトル通り
- 昨日の第3回 コンテナ型仮想化の情報交換会での @y_uuk1 さんの話を聞いてやってみた
参考
- 第3回 コンテナ型仮想化の情報交換会@大阪 (コンテナ型VMや関連するカーネル等の技術が話題の勉強会)に参加した
- Increase max image depth to 127 #2897
- dotcloud/docker
- aufs
準備
以下のような感じで 127 行以上の Dockerfile を生成した。
#!/bin/sh for i in `seq 1 1 127` do echo "RUN ls" >> Dockerfile done exit 0
ひたすら ls するだけの Dockerfile を作成。
実行
asciinema
asciinema で docker build を録画してみたw
結果

おお、確かに 127 parents とか出てるし何かしらの制限が掛かっているようだ。
何がそうさせる?
ソースコード
このあたりで 127 を決め打ちされていて、それは aufs 自身の設定に由来するようだ。こちらでもこの件について言及されている。
まとまってないまとめ
Dockerfileの127行制限はaufs自身の制限に由来している- こちらでも言及されているが
&&でつなぐというのもあり - コマンドをシェルスクリプト化して
RUN hoge.shとかさせれば回避出来そう - あとは
chef-applyとかpuppet-applyとかしても良いのでは? - そもそも
127行を超えるようなDockerfileがあるのかな...
おまけ(ターミナルの動作を記録する)
ターミナルの動作を記録するソフトを色々と試した。
インストールしたもの
brew install ttyrec brew install libpng # ttyrec を使う為 brew install freetype # ttyrec を使う為 sudo pip install --upgrade asciinema