第24回 非Linux環境のDocker FreeBSDで実際に動かしてみると……:古賀政純の「攻めのITのためのDocker塾」(4/7 ページ)
非Linux環境におけるDockerの利用が注目されつつあります。今回はIoT時代の主役になるかもしれないBSDの環境で実際にDockerを動かし、その様子からどんなことが分かるのかについて解説します。
Docker on FreeBSDを使ってみる
OSを再起動し、まずはDockerのサービスが稼働しているかを確認します。
# service docker status
エラーがなく、サービスが起動されていたら、DockerをFreeBSDで使えるようになります。起動しているDockerのバージョンを確認してみましょう。
# docker version Client version: 1.7.0-dev Client API version: 1.19 Go version (client): go1.5.3 Git commit (client): 582db78 OS/Arch (client): freebsd/amd64 Server version: 1.7.0-dev Server API version: 1.19 Go version (server): go1.5.3 Git commit (server): 582db78 OS/Arch (server): freebsd/amd64
上記の出力結果のとおり、FreeBSDで稼働するDockerのバージョンは1.7.0ベースであり、Linux環境のものに比べると古いバージョンであることが分かります。最近のDockerの周辺ソフトウェアは、Dockerの新しいバージョンを想定しているため注意が必要です。それでは実際に、ホストOSのFreeBSDで稼働するDockerを使ってCentOS 7.2のOSテンプレートをインターネット経由で入手してみましょう。
# docker search centos # docker pull centos:7.2.1511 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos 7.2.1511 83ee614b834e 3 months ago 194.6 MB
「FreeBSD上でCentOS 7.2のDockerコンテナが稼働するのか」――Dockerコンテナを起動してみます。
# docker run -it --rm --name test01 centos:7.2.1511 /bin/bash [root@ /]#
Bashプロンプトが表示され、FreeBSD上でCentOS 7.2のDockerコンテナを起動できたようです。CentOS 7.2のDockerコンテナ上で、OSのバージョンを確認してみましょう。
[root@ /]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
これは先ほどの疑問3に対する答えですが、FreeBSDがホストOSの場合でも、LinuxのDockerコンテナを稼働させることが確認できました。この他にも、CentOS 7.2のDockerコンテナ上でコマンドを入力してみましょう。
[root@ /]# df -HT Filesystem Type Size Used Avail Use% Mounted on zroot/ROOT/default zfs 5.0Z 36.0E 5.0Z 1% /
どうやら、パーティションのサイズ、使用量、空き容量が正しく表示されていないようです。次にDNSの参照先を設定し、インターネット経由でCentOS 7.2のDockerコンテナに含まれるRPMパッケージ群をアップグレードしてみましょう。
[root@ /]# vi /etc/resolv.conf nameserver 172.16.1.1 [root@ /]# yum update -y ...
無事にパッケージをアップグレードできました。外部へのネットワーク疎通は問題ありません。「docker commit」により、Dockerイメージの保管ができるかも確認してみましょう。FreeBSDの別の端末を開き、ホストOSのFreeBSD上から「docker commit」により、新たにDockerイメージ「c7:newest」を生成します。
# docker commit test01 c7:newest # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE c7 newest 7de18838be09 13 seconds ago 443.2 MB centos 7.2.1511 83ee614b834e 3 months ago 194.6 MB
新しく作成したDockerイメージ「c7:newest」からDockerコンテナを起動できるかテストします。
# docker run -it --rm --name test02 c7:newest /bin/bash [root@ /]# yum update -y ... No packages marked for update
無事、Dockerコンテナを起動できました。さらに、ホストOSの別の端末を開いて、ホストOSから起動中のDockerコンテナtest02に、docker execを使って入ることができるかをテストしてみましょう。
# docker exec -it test02 /bin/bash #
すると、ホストOSのプロンプトが返り、コンテナに入る操作に失敗しました。ここは疑問2に対する答えですが、Dockerコンテナ上のディスク容量の表示に誤りがある点や、docker execの動作に問題があるなど、Linuxに比べて制限事項が存在することが分かります。
docker execを実行してコンテナの操作に失敗しましたので、ホストOSのFreeBSD上で再度Dockerサービスを再起動します。また、停止しているDockerコンテナを全て削除しておきます。
# service docker restart # docker rm -f test01 # docker rm -f test02 ...
関連記事
- 第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.