Class: Dockerbash::Client

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

Instance Method Summary collapse

Constructor Details

#initializeClient



20
21
22
23
# File 'lib/dockerbash.rb', line 20

def initialize()
  banner
  @docker_path = find_docker()
end

Instance Method Details

#select_docker_containerObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/dockerbash.rb', line 25

def select_docker_container()
  counter = 0
  docker_ids = []
  ids = get_docker_containers_ids()
  ids.each do |i|
    cn_stdout, cn_stderr, cn_status = Open3.capture3("#{@docker_path} inspect --format={{.Name}} #{i}")
    container_name = cn_stdout.gsub(/\n/,'')
    container_name.delete!("/")

    ci_stdout, ci_stderr, ci_status = Open3.capture3("#{@docker_path} inspect --format={{.NetworkSettings.IPAddress}} #{i}")
    container_ip = ci_stdout.gsub(/\n/,'')
    container_ip.delete("/")

    cb_stdout, cb_stderr, cb_status = Open3.capture3("#{@docker_path} inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' #{i}")
    container_bindings = cb_stdout.gsub(/\n/,'')

    container_ids = i
    puts "#{counter}. Container:#{container_name}\tIp:#{container_ip}\tPorts:#{container_bindings}"
    docker_ids << container_ids
    counter += 1
  end

  selected_id = ask("Container? ", Integer) { |q| q.in = 0..docker_ids.count }
  command = "#{@docker_path} exec -t -i #{docker_ids[selected_id]} /bin/bash"
  exec(command)
end