diff --git a/pkg/kubelet/dockertools/kube_docker_client.go b/pkg/kubelet/dockertools/kube_docker_client.go index 50a1d8f22eb..6239db90a14 100644 --- a/pkg/kubelet/dockertools/kube_docker_client.go +++ b/pkg/kubelet/dockertools/kube_docker_client.go @@ -55,6 +55,9 @@ type kubeDockerClient struct { // Make sure that kubeDockerClient implemented the DockerInterface. var _ DockerInterface = &kubeDockerClient{} +// the default ShmSize to use (in bytes) if not specified. +const defaultShmSize = int64(1024 * 1024 * 64) + // newKubeDockerClient creates an kubeDockerClient from an existing docker client. func newKubeDockerClient(dockerClient *dockerapi.Client) DockerInterface { return &kubeDockerClient{ @@ -126,6 +129,11 @@ func (d *kubeDockerClient) InspectContainer(id string) (*dockertypes.ContainerJS } func (d *kubeDockerClient) CreateContainer(opts dockertypes.ContainerCreateConfig) (*dockertypes.ContainerCreateResponse, error) { + // we provide an explicit default shm size as to not depend on docker daemon. + // TODO: evaluate exposing this as a knob in the API + if opts.HostConfig != nil && opts.HostConfig.ShmSize <= 0 { + opts.HostConfig.ShmSize = defaultShmSize + } createResp, err := d.client.ContainerCreate(getDefaultContext(), opts.Config, opts.HostConfig, opts.NetworkingConfig, opts.Name) if err != nil { return nil, err