興味が湧いたのでネットで軽く記事を漁ってみました。
Linuxのディストリビューションをまたいだ時に実行ファイル(バイナリ)に互換性があるの?…に関しては意外といけるという感じですね。
参考記事:
情報をまとめるとこんな感じです。
どれもDockerで使う場合は障害という訳ではないようですね。
- Linuxのバイナリは基本的にELFで統一されるのでディストリビューションをまたいでも問題なし
- CPUの種類が違うと無理、しかしDockerはx86-64専用で、他のCPU…例えばARMは2017/09にようやく専用イメージが実装されたらしい
- ディストリビューションが違う場合、ライブラリのバージョン等が異なり詰むケースがある
「OSの名前はついているが、ベースイメージはOS的役割をするのではなく、そのOSっぽい環境を整える(ディレクトリ構成をそのOSっぽくするなど)のが役割」と予想しているのですが、どうなのでしょうか?
その通り、DockerはそもそもLinuxでしか動作しません。
Linuxで動かすならディストリビューションが違っても他の条件を同じにしてやれば動くよね。
…という前提が元になっています。
Docker for WindowsやMacがありますが、
その本質はハイパーバイザ等の準仮想化技術で超軽量のLinuxを動作させて、その中でDockerを導入、ホストマシンのDockerコマンドを内部に注入するという実装になっているようです。
なので、中身はLinux→Linux、後はコンテナ内の見てくれのライブラリ構成だけ整えてやれば良いという話になります。
alpineがいいとネットで見た
コンテナに入っているアプリが満足に動きさえすれば、
動作を保証する最小限の構成のLinuxで構わないと言えるでしょう。
alpineは総量4MBしかありません。
コンテナをぼこぼこ立ち上げても、削除しても一瞬です。
Dockerで扱うにはこんな最適なディストリビューションはないでしょう。
代わりにマイナーなパッケージやライブラリを導入することが困難になるでしょう。
この辺のさじ加減を考えながらイメージのディストリビューションを選択してみて下さい。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。