ようへいの日々精進XP

よかろうもん

Dockerfile の 127 行制限を試した

はじめに


参考


準備

以下のような感じで 127 行以上の Dockerfile を生成した。

#!/bin/sh

for i in `seq 1 1 127`
do
    echo "RUN ls" >> Dockerfile
done
exit 0

ひたすら ls するだけの Dockerfile を作成。


実行

asciinema

asciinemadocker build を録画してみたw

結果

f:id:inokara:20140413163849p:plain

おお、確かに 127 parents とか出てるし何かしらの制限が掛かっているようだ。


何がそうさせる?

ソースコード

このあたりで 127 を決め打ちされていて、それは aufs 自身の設定に由来するようだ。こちらでもこの件について言及されている。


まとまってないまとめ

  • Dockerfile127 行制限は 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

で結局

  • asciinema を使った
  • ttyrec は記録は上手く出来たが gif 変換が手元の環境では動かなかったので断念