Class: VagrantPlugins::DockerProvider::Driver
- Inherits:
-
Object
- Object
- VagrantPlugins::DockerProvider::Driver
- Includes:
- Vagrant::Util::Retryable
- Defined in:
- lib/docker-provider/driver.rb
Instance Method Summary collapse
- #create(params) ⇒ Object
- #created?(cid) ⇒ Boolean
-
#initialize ⇒ Driver
constructor
A new instance of Driver.
- #inspect(cid) ⇒ Object
- #rm(cid) ⇒ Object
- #running?(cid) ⇒ Boolean
- #start(cid) ⇒ Object
- #state(cid) ⇒ Object
- #stop(cid) ⇒ Object
Constructor Details
#initialize ⇒ Driver
Returns a new instance of Driver.
13 14 15 |
# File 'lib/docker-provider/driver.rb', line 13 def initialize @logger = Log4r::Logger.new("vagrant::docker::driver") end |
Instance Method Details
#create(params) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/docker-provider/driver.rb', line 17 def create(params) image = params.fetch(:image) ports = Array(params[:ports]) volumes = Array(params[:volumes]) name = params.fetch(:name) cmd = Array(params.fetch(:cmd)) run_cmd = %W(docker run -name #{name} -d) run_cmd += ports.map { |p| ['-p', p.to_s] } run_cmd += volumes.map { |v| ['-v', v.to_s] } run_cmd += %W(-h #{params[:hostname]}) if params[:hostname] run_cmd += [image, cmd] retryable(tries: 10, sleep: 1) do execute(*run_cmd.flatten).chomp end end |
#created?(cid) ⇒ Boolean
46 47 48 49 |
# File 'lib/docker-provider/driver.rb', line 46 def created?(cid) result = execute('docker', 'ps', '-a', '-q').to_s result =~ /^#{Regexp.escape cid}$/ end |
#inspect(cid) ⇒ Object
74 75 76 77 |
# File 'lib/docker-provider/driver.rb', line 74 def inspect(cid) # DISCUSS: Is there a chance that this will change? @data ||= JSON.parse(execute('docker', 'inspect', cid)).first end |
#rm(cid) ⇒ Object
68 69 70 71 72 |
# File 'lib/docker-provider/driver.rb', line 68 def rm(cid) if created?(cid) execute('docker', 'rm', cid) end end |
#running?(cid) ⇒ Boolean
51 52 53 54 |
# File 'lib/docker-provider/driver.rb', line 51 def running?(cid) result = execute('docker', 'ps', '-q') result =~ /^#{Regexp.escape cid}$/m end |
#start(cid) ⇒ Object
56 57 58 59 60 |
# File 'lib/docker-provider/driver.rb', line 56 def start(cid) unless running?(cid) execute('docker', 'start', cid) end end |
#state(cid) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/docker-provider/driver.rb', line 35 def state(cid) case when running?(cid) :running when created?(cid) :stopped else :not_created end end |
#stop(cid) ⇒ Object
62 63 64 65 66 |
# File 'lib/docker-provider/driver.rb', line 62 def stop(cid) if running?(cid) execute('docker', 'stop', cid) end end |