LoginSignup
0
1

More than 5 years have passed since last update.

docker-api gemで、`.NetworkSettings.Networks`が取れない問題

Last updated at Posted at 2017-10-17

docker-api gemで、.NetworkSettings.Networksが取れない問題

概要

このissue見ていただけると大体解決: https://github.com/swipely/docker-api/issues/466

docker inspectコマンドでとれる情報がなぜかgemを使うと取得できない問題です。

解決方法

::Docker::API_VERSION = '1.21'

をdockerのAPIを叩く前に置くだけです。

解説

原因は単純にgemで対象とするAPIバージョンが古いのが原因です。
わかりづらくしてた原因は、全コンテナの情報を取ると .NetworkSettings.Networks はとれてることですかね。

どうやら、docker APIの仕様かバグかで、新しいdocker engineを使うと/v1.16/containers/jsonでも、APIのバージョン的に存在しないはずの情報が返ってるみたいです。
コンテナ情報で .NetworkSettings.Networks が追加されたのが 1.21 みたいなので、定数で指定されているバージョンを上書きします。

公式でドキュメントが提供されてるAPIが1.18までなのでgemで使ってるAPIのバージョンが古すぎる気がします。
合意取ったりとかがめんどくさいので、プルリク投げたい方はどうぞ。

以下のコードで確認できるかと思います:
bash
ruby -rdocker -e "Docker::API_VERSION = '1.21'; p Docker::Container.get('${DOCKER_CONTAINER_ID}').info['NetworkSettings']['Networks']"

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1