第24回 非Linux環境のDocker FreeBSDで実際に動かしてみると……:古賀政純の「攻めのITのためのDocker塾」(6/7 ページ)
非Linux環境におけるDockerの利用が注目されつつあります。今回はIoT時代の主役になるかもしれないBSDの環境で実際にDockerを動かし、その様子からどんなことが分かるのかについて解説します。
なぜFreeBSDでLinuxバイナリが実行できるのか
次に、FreeBSD上でDockerコンテナに含まれるLinuxバイナリが本当に実行できるのかを確認します。テストに用いるLinuxバイナリは、日付を表示するdateコマンドです。以下は、ホストOSのFreeBSD上で稼働するCentOS 7.2のDockerコンテナで作業します。
[root@ /]# yum install -y file
[root@ /]# file /usr/bin/date /usr/bin/date: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=05e827b15d6bebd4fd4ddb6c3878f1f498cdc486, stripped
[root@ /]# /usr/bin/date Sun Mar 20 10:57:51 UTC 2016
上記の結果より、ホストOSがFreeBSDの場合でも、Dockerコンテナ内のLinuxバイナリを実行できることが確認できました。ここで読者の皆さんは、不思議に感じるかもしれません。
FreeBSDという非Linux OSの環境で、Linuxのバイナリが稼働しています。Dockerはハイパーバイザ型の仮想化ソフトではありませんので、FreeBSDで直接dateコマンドがプロセスとして実行していることになります。ためしに、CentOS 7.2のDockerコンテナでtailコマンドを実行し、ホストOSからpsコマンドでプロセスが直接見えるかどうかを確認してみましょう。まず、FreeBSD上で稼働するCentOS 7.2のDockerコンテナでtailコマンド自体のバイナリの種類を確認し、tailコマンドのプロセスを起動します。
[root@ /]# file /usr/bin/tail /usr/bin/tail: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=efd00d2e58755551b295647f6fce8c3bb0126057, stripped [root@ /]# tail -f /dev/null
ホストOSのFreeBSDからpsコマンドを使って、Dockerコンテナ上で実行されているtailコマンドのプロセスが見えるかどうかを確認します。
# ps axuw |grep tail root 728 0.0 0.1 4336 1308 1 S+J 8:20PM 0:00.02 tail -f /dev/null
やはり、FreeBSD上からLinuxのコマンドがプロセスとして実行されているのが分かります。これは、一体どういうことでしょうか。
非Linux環境においてLinuxバイナリを稼働させることについて、ここは非常に重要ですが、FreeBSDには「Linuxバイナリ互換機能」というLinuxのバイナリを稼働させる機能がカーネルに搭載されています。決して完全ではありませんが、多くのLinuxバイナリをFreeBSD上で稼働させることができます。FreeBSDは、この機能を利用してDockerコンテナ上のLinuxバイナリをFreeBSDで稼働させているのです。
関連記事
- 第23回 非Linux環境のDocker、プレステも採用する“あのOS”で動かす意味
実はLinuxではないOS環境でもDockerは動きます。でもWindowsではありません。今回はプレステにも搭載され、これからのIoT時代に主役になるかもしれない、あのOSでDockerを動かす理由を紹介します。 - 第21回 Dockerで3Dゲームを動かす――構築編
前回はDocker環境で3Dゲームを稼働させるゴールや方法などについてご紹介しました。今回はその環境を構築していく上でのポイントや注意点を解説します。 - 第22回 Dockerで3Dゲームを動かす――稼働編
ここまでDocker環境で3Dゲームを稼働させるための準備や方法などをみてきました。それでは実際に自動車や飛行機、鉄道のシミュレータを稼働させてみます。 - 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
Copyright © ITmedia, Inc. All Rights Reserved.