🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

1784閲覧

DockerのベースイメージがホストOSと違ってもいいのはなぜ?

pandanoir

総合スコア72

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

1グッド

9クリップ

投稿2018/04/30 09:32

現在Dockerでサイトを作りながら学んでおります。
Dockerのベースイメージとしてalpine、サーバーOSとしてCentOSを採用しています。
ここで疑問に思ったのですが、なぜベースイメージをcentosではなくalpineにしても動くのでしょうか?
(centosではなくalpineを使っているのはalpineがいいとネットで見たため)

Dockerの仕組みから、
「OSの名前はついているが、ベースイメージはOS的役割をするのではなく、そのOSっぽい環境を整える(ディレクトリ構成をそのOSっぽくするなど)のが役割」と予想しているのですが、どうなのでしょうか?

webarata3👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

興味が湧いたのでネットで軽く記事を漁ってみました。
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で扱うにはこんな最適なディストリビューションはないでしょう。

代わりにマイナーなパッケージやライブラリを導入することが困難になるでしょう。
この辺のさじ加減を考えながらイメージのディストリビューションを選択してみて下さい。

投稿2018/04/30 16:59

編集2018/04/30 17:19
miyabi-sun

総合スコア21203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

知り合いのインフラエンジニアの方からの受け売りですが…

DockerはそもそもLinuxOS上でないと動きません。
なぜか?
それは、DockerコンテナはホストのLinuxOSのリソースを使って動くからです。逆にいえば、Linuxであればディストリビューションが違っても再現できるわけです。
そのため、Dockerイメージも、基本的にはLinux系OSベースのものしか配布されていないはずです。
alpineもLinuxです。

ところで、質問者様の「そのOSっぽい環境」という表現はその通りで、100%完全再現かといわれれば微妙なところがあり、特にOSまわり、インフラまわりの検証がしたい場合はDockerのようなコンテナ仮想化ではなくVirtualbox等のVM仮想化を用いたり実機を用意したりすることもあるそうです。

投稿2018/04/30 16:41

編集2018/04/30 16:49
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問