// modifyCommonNamespaceOptions apply common namespace options for sandbox and container func modifyCommonNamespaceOptions(nsOpts *runtimeapi.NamespaceOption, hostConfig *dockercontainer.HostConfig) { if nsOpts != nil { if nsOpts.GetHostPid() { hostConfig.PidMode = namespaceModeHost } if nsOpts.GetHostIpc() { hostConfig.IpcMode = namespaceModeHost } } }
// modifyHostNetworkOptionForContainer applies NetworkMode/UTSMode to container's dockercontainer.HostConfig. func modifyHostNetworkOptionForContainer(hostNetwork bool, sandboxID string, hc *dockercontainer.HostConfig) { sandboxNSMode := fmt.Sprintf("container:%v", sandboxID) hc.NetworkMode = dockercontainer.NetworkMode(sandboxNSMode) hc.IpcMode = dockercontainer.IpcMode(sandboxNSMode) hc.UTSMode = "" hc.PidMode = "" if hostNetwork { hc.UTSMode = namespaceModeHost } }
// modifyNamespaceOptions applies namespaceoptions to dockercontainer.HostConfig. func modifyNamespaceOptions(nsOpts *runtimeapi.NamespaceOption, sandboxID string, hostConfig *dockercontainer.HostConfig) { hostNetwork := false if nsOpts != nil { if nsOpts.HostNetwork != nil { hostNetwork = nsOpts.GetHostNetwork() } if nsOpts.GetHostPid() { hostConfig.PidMode = namespaceModeHost } if nsOpts.GetHostIpc() { hostConfig.IpcMode = namespaceModeHost } } // Set for sandbox if sandboxID is not provided. if sandboxID == "" { modifyHostNetworkOptionForSandbox(hostNetwork, hostConfig) } else { // Set for container if sandboxID is provided. modifyHostNetworkOptionForContainer(hostNetwork, sandboxID, hostConfig) } }