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

» 2016年06月15日 08時00分 公開

FreeBSD Jailの管理コマンドを使って、コンテナのIPアドレスを知る

 docker execが使えないという状態でホストOSからDockerコンテナのIPアドレスを知るにはどうすればよいのでしょうか。

 FreeBSDのDockerコンテナは、FreeBSD Jailを利用しています。そこで、FreeBSD Jailの管理コマンドを駆使して、DockerコンテナのIPアドレスを知ることができます。再度、Dockerコンテナを2つ起動します。


# docker run -itd --name test01 centos:7.2.1511 /bin/bash
# docker run -itd --name test02 c7:newest /bin/bash
# docker ps -a
CONTAINER ID    IMAGE              COMMAND        CREATED         STATUS        PORTS   NAMES
80b99e3b2c53    c7:newest          "/bin/bash"    3 minutes ago   Up 3 minutes          test02
62013a6013e6    centos:7.2.1511    "/bin/bash"    3 minutes ago   Up 3 minutes          test01

 ホストOSから、これらのコンテナの状態をFreeBSD Jailの管理コマンドであるjlsコマンドで確認します。


# jls
   JID  IP Address      Hostname                      Path
     9  172.17.0.1                                    /usr/docker/zfs/graph/62013a6013e6
    10  172.17.0.2                                    /usr/docker/zfs/graph/80b99e3b2c53

 すると、右側には「docker ps -a」で得られるコンテナIDに対応したZFSファイルシステムのパスが表示され、左側には付与されたIPアドレスが表示されています。これにより、コンテナIDと付与されたIPアドレスの関係が分かります。現時点では、ホストOSのFreeBSD上で「docker exec」が正常に実行できない場合に、ホストOSからコンテナのIPアドレスを知る回避策になりますが、ここではFreeBSDのDockerがFreeBSD Jailを利用しているということを知ってもらいたいと思い、ご紹介しました。

 他にも、連載第10回でご紹介したdocker saveでDockerイメージをtarアーカイブに変換し、他のDocker環境にdocker loadで移植できるかどうかも試してみてください。

 筆者の環境では、「docker save」によってFreeBSD上のDockerイメージをtarアーカイブに変換し、他のLinuxのDocker環境に移植できましたが、逆に他のDocker環境のDockerイメージをtarアーカイブに変換したものをFreeBSD上にコピーし、FreeBSD上で「docker load」によってDockerイメージとして登録することはできませんでした。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ