Class: VagrantPlugins::Vocker::DockerClient
- Inherits:
-
Object
- Object
- VagrantPlugins::Vocker::DockerClient
- Defined in:
- lib/vocker/docker_client.rb
Instance Method Summary collapse
- #container_exist?(id) ⇒ Boolean
- #container_running?(id) ⇒ Boolean
- #create_container(config) ⇒ Object
- #daemon_running? ⇒ Boolean
-
#initialize(machine) ⇒ DockerClient
constructor
A new instance of DockerClient.
- #pull_images(*images) ⇒ Object
- #run(containers) ⇒ Object
- #run_container(config) ⇒ Object
- #start_container(id) ⇒ Object
- #start_service ⇒ Object
Constructor Details
#initialize(machine) ⇒ DockerClient
Returns a new instance of DockerClient.
6 7 8 |
# File 'lib/vocker/docker_client.rb', line 6 def initialize(machine) @machine = machine end |
Instance Method Details
#container_exist?(id) ⇒ Boolean
50 51 52 |
# File 'lib/vocker/docker_client.rb', line 50 def container_exist?(id) @machine.communicate.test("sudo docker ps -a -q | grep -q #{id}") end |
#container_running?(id) ⇒ Boolean
60 61 62 |
# File 'lib/vocker/docker_client.rb', line 60 def container_running?(id) @machine.communicate.test("sudo docker ps -q | grep #{id}") end |
#create_container(config) ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/vocker/docker_client.rb', line 64 def create_container(config) args = "-cidfile=#{config[:cidfile]} -d" args << " -dns=#{config[:dns]}" if config[:dns] args << " #{config[:additional_run_args]}" if config[:additional_run_args] @machine.communicate.sudo %[ rm -f #{config[:cidfile]} docker run #{args} #{config[:image]} #{config[:cmd]} ] end |
#daemon_running? ⇒ Boolean
24 25 26 |
# File 'lib/vocker/docker_client.rb', line 24 def daemon_running? @machine.communicate.test('test -f /var/run/docker.pid') end |
#pull_images(*images) ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/vocker/docker_client.rb', line 10 def pull_images(*images) @machine.communicate.tap do |comm| images.each do |image| comm.sudo("docker images | grep -q #{image} || docker pull #{image}") end end end |
#run(containers) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/vocker/docker_client.rb', line 28 def run(containers) containers.each do |name, config| cids_dir = "/var/lib/vocker/cids" config[:cidfile] ||= "#{cids_dir}/#{Digest::SHA1.hexdigest name}" @machine.communicate.sudo("mkdir -p #{cids_dir}") run_container(config) end end |
#run_container(config) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/vocker/docker_client.rb', line 38 def run_container(config) raise "Container's cidfile was not provided!" unless config[:cidfile] id = "$(cat #{config[:cidfile]})" if container_exist?(id) start_container(id) else create_container(config) end end |
#start_container(id) ⇒ Object
54 55 56 57 58 |
# File 'lib/vocker/docker_client.rb', line 54 def start_container(id) unless container_running?(id) @machine.communicate.sudo("docker start #{id}") end end |
#start_service ⇒ Object
18 19 20 21 22 |
# File 'lib/vocker/docker_client.rb', line 18 def start_service if !daemon_running? && @machine.guest.capability?(:docker_start_service) @machine.guest.capability(:docker_start_service) end end |