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.