Module: CIDE::Docker

Included in:
Builder, CLI, Runner
Defined in:
lib/cide/docker.rb

Overview

Simple docker client helper

Defined Under Namespace

Classes: Error, VersionError

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.id(str) ⇒ Object

Generates a valid id for docker from any string



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

def self.id(str)
  str.to_s.downcase.gsub(/[^a-z0-9\-_.]/, '_')
end

Instance Method Details

#docker(*args, verbose: false, capture: false) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/cide/docker.rb', line 31

def docker(*args, verbose: false, capture: false)
  cmd = (['docker'] + args).map(&:to_s)
  p cmd if verbose

  if capture
    r, w = IO.pipe
    pid = Process.spawn(*cmd, out: w)
    w.close
    return r.read
  else
    pid = Process.spawn(*cmd)

    return 0
  end
ensure
  Process.wait(pid)
  exitstatus = $?.exitstatus
  raise Error, exitstatus if exitstatus > 0
end

#docker_image_ids(filter_by: false) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/cide/docker.rb', line 22

def docker_image_ids(filter_by: false)
  args = ['--no-trunc']
  args << ['--filter', filter_by] if filter_by
  lines = docker('images', *args, capture: true).lines[1..-1]
  lines
    .map { |line| line.split(/\s+/) }
    .map { |line| line[2] }
end