class Dockerc::Client
Attributes
docker_url[R]
Public Class Methods
new(args={})
click to toggle source
# File lib/dockerc/client.rb, line 5 def initialize(args={}) @docker_url = args.fetch(:docker_url, ENV['DOCKER_URL'] || 'unix:///var/run/docker.sock') end
Public Instance Methods
connection()
click to toggle source
# File lib/dockerc/client.rb, line 9 def connection @connection ||= create_connection! end
containers()
click to toggle source
# File lib/dockerc/client.rb, line 22 def containers json = connection.get({ path: '/containers/json', query: { all: 1 }, expects: [ 200 ] }).body normalizer.handle_response_data(MultiJson.load(json)) end
create_connection!()
click to toggle source
# File lib/dockerc/client.rb, line 13 def create_connection! uri = URI.parse docker_url if uri.scheme == 'unix' Excon.new('unix:///', socket: uri.path, persistent: true) else Excon.new(docker_url, persistent: true) end end
create_container(params)
click to toggle source
# File lib/dockerc/client.rb, line 32 def create_container(params) req = { path: '/containers/create', body: normalizer.handle_request_data(params).to_json, expects: [ 201 ] } begin res = connection.post(req) rescue Excon::Errors::InternalServerError => e raise Dockerc::Errors::ContainerCreationError, e.response.body rescue Excon::Errors::NotFound raise Dockerc::Errors::ImageNotFound end normalizer.handle_response_data(MultiJson.load(res.body)) end
images()
click to toggle source
# File lib/dockerc/client.rb, line 49 def images json = connection.get({ path: '/images/json', query: { all: 1 }, expects: [ 200 ] }).body normalizer.handle_response_data(MultiJson.load(json)) end
pull_image(name)
click to toggle source
# File lib/dockerc/client.rb, line 59 def pull_image(name) parts = [] streamer = lambda do |chunk, remaining_bytes, total_bytes| data = MultiJson.load(chunk) parts << normalizer.handle_response_data(data) end body = connection.post({ path: '/images/create', query: normalizer.handle_request_query(from_image: name), expects: [ 200 ], response_block: streamer }).body unless parts.last.has_key?(:id) raise Dockerc::Errors::ImagePullFailed, parts end parts end
Private Instance Methods
normalizer()
click to toggle source
# File lib/dockerc/client.rb, line 79 def normalizer @normalizer ||= Dockerc::Normalizer.new end