第26回 32ビット環境に迫る「2038年問題」 検証における5つの疑問古賀政純の「攻めのITのためのDocker塾」(2/4 ページ)

» 2016年07月27日 08時00分 公開

疑問2.64ビットのLinux上で32ビット版のDockerコンテナを問題なく稼働させることができるのか?

 次は疑問2です。32ビット版OSテンプレートのDockerイメージを使えば、64ビットのホストOS上で、32ビット版のDockerコンテナを稼働させることができそうです。試しに、32ビット版のCentOS 6.xを稼働させてみましょう。今回は、上記の検索結果にリストアップされているイメージ「tenforward/centos-i386」を入手します。CentOS 7.xが稼働するホストOS上で、以下のように入力します。


# docker pull tenforward/centos-i386
# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
tenforward/centos-i386   latest              770feb90cf03        2 years ago         578.8 MB

 入手した32ビット版CentOSのDockerイメージからDockerコンテナが起動するか試してみます。


# docker run -it --rm --name test0001 tenforward/centos-i386 /bin/bash
bash-4.1#

 無事に32ビット版CentOSのDockerコンテナが起動したようです。しかし、Dockerコンテナが本当に32ビットなのかは、どうやって分かるのでしょうか。Dockerコンテナのアーキテクチャが32ビットかどうかを知るには、getconfコマンドに「LONG_BIT」を付与します。


bash-4.1# getconf LONG_BIT
32

 上記のように「32」と出力される場合、そのコマンドを実行した環境は32ビットアーキテクチャであると言えます。すなわち、Dockerコンテナが32ビット環境ということです。また、Dockerコンテナ上にインストールされているパッケージが32ビット版かどうかを確認してみましょう。


bash-4.1# rpm -qa 
filesystem-2.4.30-3.el6.i686
libcap-2.16-5.5.el6.i686
popt-1.13-7.el6.i686
gamin-0.1.10-9.el6.i686
shadow-utils-4.1.4.2-13.el6.i686
file-libs-5.04-15.el6.i686
pcre-7.8-6.el6.i686
...
...

 パッケージ名の最後に「i686」とあり、32ビット版のパッケージがインストールされていると分かります。これにより、64ビットのホストOS上で、32ビット版のOSテンプレートのDockerイメージ「tenforward/centos-i386」からDockerコンテナを起動し、32ビットのアプリが稼働することが確認できます。

Docker 32ビット版のDockerイメージを入手し、32ビット環境のDockerコンテナを稼働させる

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ