Class: Penkit::Docker

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/penkit/docker.rb,
lib/penkit/docker/ps.rb,
lib/penkit/docker/rm.rb,
lib/penkit/docker/pull.rb,
lib/penkit/docker/stop.rb,
lib/penkit/docker/start.rb,
lib/penkit/docker/network.rb

Constant Summary collapse

IMAGE_REGEX =
/^([^\s\/:]+)(:[^\s\/:]+)?$/
NETWORK =
"penkit".freeze
REPOSITORY =
"penkit".freeze

Instance Method Summary collapse

Instance Method Details

#create_network!Object



3
4
5
# File 'lib/penkit/docker/network.rb', line 3

def create_network!
  system("docker", "network", "create", *network_options, out: File::NULL) unless network_exists?
end

#find_all_containersObject



3
4
5
# File 'lib/penkit/docker/ps.rb', line 3

def find_all_containers
  IO.popen(["docker", "ps", "-aq", *filter_options]).readlines.map(&:strip)
end

#find_container_namesObject



7
8
9
# File 'lib/penkit/docker/ps.rb', line 7

def find_container_names
  IO.popen(["docker", "ps", "-a", "--format", "{{.Names}}", *filter_options]).readlines.map(&:strip)
end

#find_running_containersObject



11
12
13
# File 'lib/penkit/docker/ps.rb', line 11

def find_running_containers
  IO.popen(["docker", "ps", "-q", *filter_options]).readlines.map(&:strip)
end

#ps(*args) ⇒ Object



15
16
17
# File 'lib/penkit/docker/ps.rb', line 15

def ps(*args)
  exec("docker", "ps", *filter_options, *args)
end

#pull(image, options = {}) ⇒ Object



3
4
5
6
7
8
9
# File 'lib/penkit/docker/pull.rb', line 3

def pull(image, options={})
  if options[:quiet]
    system("docker", "pull", image_url(image), out: File::NULL, err: File::NULL)
  else
    system("docker", "pull", image_url(image))
  end
end

#rm(*containers) ⇒ Object



3
4
5
# File 'lib/penkit/docker/rm.rb', line 3

def rm(*containers)
  exec("docker", "rm", "--force", *containers)
end

#run(image, *args) ⇒ Object



3
4
5
6
# File 'lib/penkit/docker/start.rb', line 3

def run(image, *args)
  create_network!
  exec("docker", "run", "--rm", "-it", *run_options, image_url(image), *args)
end

#start(image, options = {}) ⇒ Object



8
9
10
11
12
13
# File 'lib/penkit/docker/start.rb', line 8

def start(image, options={})
  create_network!
  options[:name] ||= unique_name(image)
  puts "Starting container #{options[:name]}"
  exec("docker", "run", "--detach", *run_options(options), image_url(image))
end

#stop(*containers) ⇒ Object



3
4
5
# File 'lib/penkit/docker/stop.rb', line 3

def stop(*containers)
  exec("docker", "stop", *containers)
end