1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
require 'cgi'
require 'json'
require 'excon'
require 'tempfile'
require 'base64'
# Disabled: rubygems usage conflicts with Debian policies and it's not
# really used with docker-api gem anyway.
#require 'rubygems/package'
require 'archive/tar/minitar'
require 'uri'
require 'open-uri'
# The top-level module for this gem. It's purpose is to hold global
# configuration variables that are used as defaults in other classes.
module Docker
attr_accessor :creds, :logger
require 'docker/error'
require 'docker/connection'
require 'docker/base'
require 'docker/container'
require 'docker/event'
require 'docker/image'
require 'docker/messages'
require 'docker/util'
require 'docker/version'
require 'docker/rake_task' if defined?(Rake)
def default_socket_url
'unix:///var/run/docker.sock'
end
def env_url
ENV['DOCKER_URL']
end
def url
@url ||= ENV['DOCKER_URL'] || ENV['DOCKER_HOST'] || default_socket_url
# docker uses a default notation tcp:// which means tcp://localhost:4243
if @url == 'tcp://'
@url = 'tcp://localhost:4243'
end
@url
end
def options
@options ||= {}
end
def url=(new_url)
@url = new_url
reset_connection!
end
def options=(new_options)
@options = new_options
reset_connection!
end
def connection
@connection ||= Connection.new(url, options)
end
def reset_connection!
@connection = nil
end
# Get the version of Go, Docker, and optionally the Git commit.
def version
Util.parse_json(connection.get('/version'))
end
# Get more information about the Docker server.
def info
Util.parse_json(connection.get('/info'))
end
# Login to the Docker registry.
def authenticate!(options = {})
creds = options.to_json
connection.post('/auth', {}, :body => creds)
@creds = creds
true
rescue Docker::Error::ServerError, Docker::Error::UnauthorizedError
raise Docker::Error::AuthenticationError
end
# When the correct version of Docker is installed, returns true. Otherwise,
# raises a VersionError.
def validate_version!
Docker.info
true
rescue Docker::Error::DockerError
raise Docker::Error::VersionError, "Expected API Version: #{API_VERSION}"
end
module_function :default_socket_url, :env_url, :url, :url=, :options,
:options=, :creds, :creds=, :logger, :logger=,
:connection, :reset_connection!, :version, :info,
:authenticate!, :validate_version!
end
|