class DockerJail::Simple

Public Class Methods

new(image:, cmd_list:, user: nil, workdir: nil, cpus: nil, memory_mb: nil, pids_limit: nil, binds: nil, tmpfs: nil, **other_opts) click to toggle source

@param [String] image Container base image @param [Array<String>] cmd_list Execute command and parameters @param [String] user (nil) Docker container's default user is 'root:root'. @param [String] cpus (nil) @param [Integer] memory_mb (nil) Memory limit in MB. 0 is unlimited @param [Integer] pids_limit (nil) @param [Array<String>] binds (nil) Bind mount directories @param [String] workdir (nil) The working directory. @param [Hash] tmpfs (nil) Mount empty tmpfs @option opts [Hash] opts Other options to create Docker container

Calls superclass method DockerJail::Base::new
# File lib/docker-jail/simple.rb, line 15
def initialize(image:, cmd_list:, user: nil, workdir: nil, cpus: nil, memory_mb: nil,
               pids_limit: nil, binds: nil, tmpfs: nil, **other_opts)
  mem_size = memory_mb&.*(1024**2)
  other_host_opts = other_opts.delete(:HostConfig)

  host_opts = {
    CpusetCpus: cpus,
    Memory: mem_size,
    MemorySwap: mem_size,
    PidsLimit: pids_limit,
    Binds: binds,
    Tmpfs: tmpfs,
  }.compact.merge(other_host_opts || {})

  opts = {
    Image: image,
    Cmd: cmd_list,
    User: user,
    WorkingDir: workdir,
    HostConfig: host_opts,
  }.compact.merge(other_opts)

  super(opts.merge(other_opts || {}))
end