docker/image.go
func (s *Image) Run(cfg *RunConfig) (*Container, error) {
	args := make([]string, 0, len(cfg.Options)+len(cfg.Args)+1)
	args = append(args, cfg.Options...)
	args = append(args, s.name)
	args = append(args, cfg.Args...)

	out, err := s.docker.Run("run", args...)
	if err != nil {
		return nil, err
	}

	container := &Container{
		docker: s.docker,
		id:     strings.TrimSpace(out),
	}
	if container.id == "" {
		return nil, UnexpectedOutputError(
			"Unexpected empty output when running docker container")
	}

	return container, nil
}
func (s *Image) Run(cfg *RunConfig) (*Container, error) {
	args := make([]string, 0, len(cfg.Options)+len(cfg.Args)+1)
	args = append(args, cfg.Options...)
	args = append(args, s.name)
	args = append(args, cfg.Args...)

	out, err := s.docker.Run("run", args...)
	if err != nil {
		return nil, err
	}

	container := &Container{
		docker: s.docker,
		id:     strings.TrimSpace(out),
	}
	if container.id == "" {
		return nil, UnexpectedOutputError(
			"Unexpected empty output when running docker container")
	}

	return container, nil
}
// Run creates a new Docker container as defined by current image and container
// template.
//
// Returns ExternalCmdError or UnexpectedOutputError on error.