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.



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

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

Instance Attribute Details

#nameObject

Returns the value of attribute name.



194
195
196
# File 'lib/jarl/docker.rb', line 194

def name
  @name
end

#pathObject

Returns the value of attribute path.



194
195
196
# File 'lib/jarl/docker.rb', line 194

def path
  @path
end

Class Method Details

.prebuilt_image_namesObject



248
249
250
251
252
253
254
255
256
# File 'lib/jarl/docker.rb', line 248

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



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

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

#open_ssh_session!Object



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

def open_ssh_session!
  running_container.open_ssh_session!
end

#prebuilt?Boolean

Returns:

  • (Boolean)


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

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

#pull!Object



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

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

#running?Boolean

Returns:

  • (Boolean)


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

def running?
  !!running_container
end

#running_containerObject



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

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

#start!Object



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

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

#stop!Object



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

def stop!
  running_container.stop!
end

#unuse!Object



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

def unuse!
  Docker.images_used_remove(name)
end

#use!Object



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

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

#used?Boolean

Returns:

  • (Boolean)


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

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