検索
ニュース

第24回 非Linux環境のDocker FreeBSDで実際に動かしてみると……古賀政純の「攻めのITのためのDocker塾」(4/7 ページ)

非Linux環境におけるDockerの利用が注目されつつあります。今回はIoT時代の主役になるかもしれないBSDの環境で実際にDockerを動かし、その様子からどんなことが分かるのかについて解説します。

Share
Tweet
LINE
Hatena

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
...

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る