class Image
Attributes
created[RW]
id[RW]
regexp_repo[RW]
regexp_tag[RW]
repository[RW]
size[RW]
tag[RW]
Public Class Methods
build(dockerfile, *tags)
click to toggle source
# File lib/models/image.rb, line 22 def self.build(dockerfile, *tags) run 'docker', 'build', '--force-rm', '-f', dockerfile, '-t', tags.join(' -t '), '.' end
command()
click to toggle source
# File lib/models/image.rb, line 14 def self.command 'docker images' end
create(line)
click to toggle source
# File lib/models/image.rb, line 57 def self.create(line) repository, tag, id, created, size = line.chomp.split(' ' * 2).reject(&:empty?).map(&:strip) ret = new(repository: repository, tag: tag, id: id, created: created, size: size, raw: line) ret end
find(keyword:, name:, tag:)
click to toggle source
# File lib/models/image.rb, line 33 def self.find(keyword:, name:, tag:) return all unless keyword || name || tag ret = keyword ? search(keyword) : all if name regexp_repo = /#{name}/i ret = ret.select do |image| image.regexp_repo = regexp_repo regexp_repo.match image.repository end end if tag regexp_tag = /#{tag}/i ret = ret.select do |image| image.regexp_tag = regexp_tag regexp_tag.match image.tag end end ret end
headers()
click to toggle source
# File lib/models/image.rb, line 4 def self.headers { repository: 'REPOSITORY', tag: 'TAG', id: 'IMAGE ID', created: 'CREATED', size: 'SIZE' } end
launch(image_name, run_opts, command)
click to toggle source
# File lib/models/image.rb, line 18 def self.launch(image_name, run_opts, command) ['docker', 'run', run_opts, image_name, command] end
new(**params)
click to toggle source
# File lib/models/image.rb, line 63 def initialize(**params) @repository = params[:repository] @tag = params[:tag] @id = params[:id] @created = params[:created] @size = params[:size] @raw = params[:raw] end
pull(name)
click to toggle source
# File lib/models/image.rb, line 77 def self.pull(name) run("docker pull #{name}") end
push(repo_name)
click to toggle source
# File lib/models/image.rb, line 53 def self.push(repo_name) run("docker push #{repo_name}") end
tag(name, *as_names)
click to toggle source
# File lib/models/image.rb, line 85 def self.tag(name, *as_names) run("docker tag #{name} #{as_names.join(' ')}") end
Public Instance Methods
del()
click to toggle source
# File lib/models/image.rb, line 72 def del instance = /<none>/.match(image_name) ? id : image_name run("docker rmi -f #{instance}") end
image_name()
click to toggle source
# File lib/models/image.rb, line 89 def image_name "#{repository}:#{tag || 'latest'}" end
launch(run_opts, command)
click to toggle source
# File lib/models/image.rb, line 93 def launch(run_opts, command) self.class.launch(image_name, run_opts, command) end
push()
click to toggle source
# File lib/models/image.rb, line 81 def push self.class.push(image_name) end
to_a(*cols)
click to toggle source
# File lib/models/image.rb, line 97 def to_a(*cols) cols = Image.headers.keys if cols.empty? ret = cols.map { |col| send(col).strip } ret end
to_s()
click to toggle source
# File lib/models/image.rb, line 103 def to_s @raw.gsub!(@regexp, &:yellow) if @regexp @raw.sub!(repository, repository.gsub(@regexp_repo, '\0'.red)) if @regexp_repo @raw.gsub!(/#{tag}$/) { |tag| tag.gsub(@regexp_tag, '\0'.blue) } if @regexp_tag @raw end