func (c *Client) CreateContainer(ctx context.Context, config DockerConfig) (container.ContainerCreateCreatedBody, error) {
	networkingConfig := createNetworkingConfig(config.NetworkID, config.Aliases)
	hostConfig := createHostConfig(config.Ports, config.VolumeMounts)
	containerConfig := createContainerConfig(config.ContainerName,
		config.Image,
		config.Env,
		config.Labels,
		config.Command,
		config.Entrypoint,
		config.VolumeSet,
		config.PortSet)
	return c.ContainerCreate(
		ctx,
		&containerConfig,
		&hostConfig,
		&networkingConfig,
		config.ContainerName,
	)
}
CreateContainer creates a docker container from a docker config
package docker
import (
	"bufio"
	"context"
	"sync"
	"time"
	"github.com/docker/docker/api/types"
	"github.com/docker/docker/api/types/container"
	"github.com/docker/docker/api/types/mount"
	"github.com/docker/docker/api/types/network"
	"github.com/docker/go-connections/nat"
)
const ContainerDeploymentLabel = "krane.deployment"
type DockerConfig struct {
	ContainerName string
	Image         string
	NetworkID     string
	Labels        map[string]string
	Ports         nat.PortMap
	PortSet       nat.PortSet
	VolumeMounts  []mount.Mount
	VolumeSet     map[string]struct{}
	Aliases       []string
	Env           []string  
	Command       []string
	Entrypoint    []string
}