経緯
同じはずのDockerコンテナなのにローカル環境とテスト環境でテスト結果が異なっていた。
ファイル操作をするテストケースでLinuxでダメ文字といわれている\0や/周りでファイル・フォルダを作成するテストケースを書いていたところ
ローカル環境ではテストが通る(作成に失敗)開発環境ではテストが失敗した(作成に成功)
開発環境
Arch Linux
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
uname -r
4.13.8-1-ARCH
ローカル環境
DockerToolbox
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
uname -r
4.4.89-boot2docker
結論
OSのベースになっているファイルシステム等までは同じにならないのでカーネルのバージョンも合わせるようにした方が良さそうですが、簡単にできそうにないので、ファイルシステム等に依存する処理は行わないほうが良さそうです。
追記
ストレージドライバの設定をデフォルトではなく設定してファイルシステムを揃えてやるという手もあるかもしれませんね、しかし、これだと毎回気にしないといけないので「思考停止で同じ環境ができる!」とはいきませんが。
ディストリビューションの標準ストレージ・ドライバを使います 。
Docker をインストールする時、システム上の設定に応じてデフォルトのストレージ・ドライバを選択します。
デフォルトのストレージ・ドライバの使用は、安定性に対する重要な要素になります。
デフォルトのものを使わなければ、バグや微妙な差違に遭遇する可能性が増えるかもしれません。
参考
http://x68000.q-e-d.net/~68user/unix/pickup?%A5%D5%A5%A1%A5%A4%A5%EB%C0%A9%B8%C2%A4%DE%A4%C8%A4%E1
http://docs.docker.jp/engine/userguide/storagedriver/selectadriver.html