Dockerのコンテナネットワーク名にハイフン(-)が入っているものにコンテナを接続した後、コンテナのIP情報をinspectで取得しようとしたらエラーが発生して取得できませんでした。
その解決方法についてメモっておきます。
環境
項目 | バージョン |
---|---|
OS | CentOS7.5 |
Docker | 1.13.1, build 8633870/1.13.1 |
Image | centos:centos7 |
検証内容
ハイフン入りのネットワーク example-nw
を作成してコンテナを接続しIPアドレスを取得してみます。
検証実施
ネットワーク作成
example-nw
を作成します。
1 2 |
[root@localhost ~]# docker network create example-nw |
コンテナ接続
example01
という名前のコンテナを example-nw
に接続します。
1 2 |
[root@localhost ~]# docker run -d -it --name example01 --network example-nw centos:centos7 |
ネットワーク情報を取得
ネットワーク情報を取得してみます。
1 2 3 |
[root@localhost ~]# docker inspect -f '{{ .NetworkSettings.Networks.example-nw.IPAddress }}' example01 Template parsing error: template: :1: bad character U+002D '-' |
Template parsing error
が出てIPアドレスが取得できません。
※ちなみにアンダースコアだと本自称は発生しません。
解決方法
以下のように一手間加える必要がありますが、IPアドレスは取得できました 🙂
1 2 3 |
[root@localhost ~]# docker inspect -f '{{ $network := index .NetworkSettings.Networks "example-nw" }}{{ $network.IPAddress }}' example01 172.19.0.2 |
参考
https://github.com/moby/moby/issues/35886#issuecomment-354781629