diff --git a/pkg/container/container.go b/pkg/container/container.go index 64837ee40..332c78886 100644 --- a/pkg/container/container.go +++ b/pkg/container/container.go @@ -45,10 +45,13 @@ type Container interface { // RunCommandOptions options for RunCommand type RunCommandOptions struct { + Privileged bool + Cmd []string EnvVars []string VolumeMounts []string - Input io.Reader + + Input io.Reader } // NewContainer returns instance of Container interface implemented by particular driver diff --git a/pkg/container/container_docker.go b/pkg/container/container_docker.go index 11406bd97..55070ce62 100644 --- a/pkg/container/container_docker.go +++ b/pkg/container/container_docker.go @@ -169,23 +169,24 @@ func (c *DockerContainer) getCmd(cmd []string) ([]string, error) { } // getConfig creates configuration structures for Docker API client. -func (c *DockerContainer) getConfig( - cmd []string, - volumeMounts []string, - envVars []string, -) (container.Config, container.HostConfig) { +func (c *DockerContainer) getConfig(opts RunCommandOptions) (container.Config, container.HostConfig, error) { + cmd, err := c.getCmd(opts.Cmd) + if err != nil { + return container.Config{}, container.HostConfig{}, err + } cCfg := container.Config{ Image: c.imageURL, Cmd: cmd, AttachStdin: true, OpenStdin: true, - Env: envVars, + Env: opts.EnvVars, Tty: true, } hCfg := container.HostConfig{ - Binds: volumeMounts, + Binds: opts.VolumeMounts, + Privileged: opts.Privileged, } - return cCfg, hCfg + return cCfg, hCfg, nil } // getImageID return ID of container image specified by URL. Method executes @@ -241,13 +242,11 @@ func (c *DockerContainer) ImagePull() error { // RunCommand executes specified command in Docker container. Method handles // container STDIN and volume binds -func (c *DockerContainer) RunCommand(opts RunCommandOptions) error { - realCmd, err := c.getCmd(opts.Cmd) +func (c *DockerContainer) RunCommand(opts RunCommandOptions) (err error) { + containerConfig, hostConfig, err := c.getConfig(opts) if err != nil { return err } - - containerConfig, hostConfig := c.getConfig(realCmd, opts.VolumeMounts, opts.EnvVars) resp, err := c.dockerClient.ContainerCreate( c.ctx, &containerConfig,