はじめに
- 今更だけど...
- 以前に docker の Remote API を触ったことがあったが Ruby からも扱えるようなので試してみた
- 前回の記事でも Dashing から Remote API を使っている
参考
細かいことは置いといて
逆引き◯◯的な感じで。
gem インストール
gem install docker-api --no-ri --no-rdoc -V
稼働中のコンテナ一覧の ID を取得する
require 'docker' Docker.url="http://#{DOCKER_HOST}:4243/" cons = Docker::Container.all(:running => true) cons.each do |con| puts con.id end
以下のようにコンテナ ID が得られる。
ef1b058edfcf2b598e6c44c0e389cafe5caca652b9e51280e72cb45d5efc1c9b 5a6cead4d80da3a0f32e1a623670ac463e9645a3b3946c5e83b667ae8763cc31 6815f0019f1928c6525e52be9164b9b2cf044a009b95ee40666f6a29d27a9454 9f2f92e44f694e09aba0dc9fe7e64a52af0a2c0df53482fa470007b0d2e9b67c
長いなーと思ったら docker ps
の出力結果みたいにコンテナ ID を 12 桁にする場合には以下のようにしてもいいかも。
require 'docker' Docker.url="http://#{DOCKER_HOST}:4243/" cons = Docker::Container.all(:running => true) cons.each do |con| puts con.id[0,12] end
コンテナ名とかは以下のように取得出来る。
puts con.info.fetch("Names")
コンテナ一覧を取得する
docker
コマンドで言うところの docker ps -a
と同じ結果が得られる。
require 'docker' Docker.url="http://#{DOCKER_HOST}:4243/" cons = Docker::Container.all(:all => true) cons.each do |con| puts con end
以下のような結果となる。
Docker::Container { :id => 3a954851ae74985788cb1236f4db26667c6ef17f69f5f62c5db9f26bf3a9d867, :connection => Docker::Connection { :url => http://${DOCKER_HOST}:4243/, :options => {} } } Docker::Container { :id => ef1b058edfcf2b598e6c44c0e389cafe5caca652b9e51280e72cb45d5efc1c9b, :connection => Docker::Connection { :url => http://${DOCKER_HOST}:4243/, :options => {} } } Docker::Container { :id => 5a6cead4d80da3a0f32e1a623670ac463e9645a3b3946c5e83b667ae8763cc31, :connection => Docker::Connection { :url => http://${DOCKER_HOST}:4243/, :options => {} } } Docker::Container { :id => 6815f0019f1928c6525e52be9164b9b2cf044a009b95ee40666f6a29d27a9454, :connection => Docker::Connection { :url => http://${DOCKER_HOST}:4243/, :options => {} } }
稼働中のコンテナの数は?
今までの例を利用して稼働中のコンテナ数はこんな感じで。
require 'docker' Docker.url="http://#{DOCKER_HOST}:4243/" cons = Docker::Container.all(:running => true) puts cons.size
引き続き
- 気づいたら書こう