Class: Jarl::Docker::Image

Inherits:
Object
  • Object
show all
Defined in:
lib/jarl/docker.rb

Overview

Image

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, path) ⇒ Image

Returns a new instance of Image.



200
201
202
203
# File 'lib/jarl/docker.rb', line 200

def initialize(name, path)
  @name = name.to_s
  @path = path
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



198
199
200
# File 'lib/jarl/docker.rb', line 198

def name
  @name
end

#pathObject

Returns the value of attribute path.



198
199
200
# File 'lib/jarl/docker.rb', line 198

def path
  @path
end

Class Method Details

.prebuilt_image_namesObject



252
253
254
255
256
257
258
259
260
# File 'lib/jarl/docker.rb', line 252

def self.prebuilt_image_names
  return @prebuilt_image_names if @prebuilt_image_names
  di = `docker images`
  @prebuilt_image_names = di.split("\n").map do |line|
    m = line.match(/^(\S*)\s*/)
    m[1]
  end
  @prebuilt_image_names
end

Instance Method Details

#build!Object



217
218
219
# File 'lib/jarl/docker.rb', line 217

def build!
  sh "docker build -t #{name} #{path}"
end

#open_ssh_session!Object



235
236
237
# File 'lib/jarl/docker.rb', line 235

def open_ssh_session!
  running_container.open_ssh_session!
end

#prebuilt?Boolean

Returns:

  • (Boolean)


205
206
207
# File 'lib/jarl/docker.rb', line 205

def prebuilt?
  self.class.prebuilt_image_names.include?(name)
end

#pull!Object



221
222
223
# File 'lib/jarl/docker.rb', line 221

def pull!
  sh "docker pull #{name}"
end

#running?Boolean

Returns:

  • (Boolean)


209
210
211
# File 'lib/jarl/docker.rb', line 209

def running?
  !!running_container
end

#running_containerObject



213
214
215
# File 'lib/jarl/docker.rb', line 213

def running_container
  Docker.containers_running.select { |c| c.name == name }.first
end

#start!Object



225
226
227
228
229
# File 'lib/jarl/docker.rb', line 225

def start!
  Container.clean_containers(name)
  run_flags = "--name=#{name} --hostname=#{name} -d"
  sh "docker run #{run_flags} #{name}"
end

#stop!Object



231
232
233
# File 'lib/jarl/docker.rb', line 231

def stop!
  running_container.stop!
end

#unuse!Object



244
245
246
# File 'lib/jarl/docker.rb', line 244

def unuse!
  Docker.images_used_remove(name)
end

#use!Object



239
240
241
242
# File 'lib/jarl/docker.rb', line 239

def use!
  build! unless prebuilt?
  Docker.images_used_add(name)
end

#used?Boolean

Returns:

  • (Boolean)


248
249
250
# File 'lib/jarl/docker.rb', line 248

def used?
  Docker.images_used.map(&:name).include?(name)
end