本文整理汇总了Golang中github.com/docker/engine-api/types/container.HostConfig.NetworkMode方法的典型用法代码示例。如果您正苦于以下问题:Golang HostConfig.NetworkMode方法的具体用法?Golang HostConfig.NetworkMode怎么用?Golang HostConfig.NetworkMode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/docker/engine-api/types/container.HostConfig
的用法示例。
在下文中一共展示了HostConfig.NetworkMode方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: modifyHostNetworkOptionForSandbox
// modifyHostNetworkOptionForSandbox applies NetworkMode/UTSMode to sandbox's dockercontainer.HostConfig.
func modifyHostNetworkOptionForSandbox(hostNetwork bool, hc *dockercontainer.HostConfig) {
if hostNetwork {
hc.NetworkMode = namespaceModeHost
} else {
// Assume kubelet uses either the cni or the kubenet plugin.
// TODO: support docker networking.
hc.NetworkMode = "none"
}
}
示例2: SetDefaultNetModeIfBlank
// SetDefaultNetModeIfBlank changes the NetworkMode in a HostConfig structure
// to default if it is not populated. This ensures backwards compatibility after
// the validation of the network mode was moved from the docker CLI to the
// docker daemon.
func SetDefaultNetModeIfBlank(hc *container.HostConfig) *container.HostConfig {
if hc != nil {
if hc.NetworkMode == container.NetworkMode("") {
hc.NetworkMode = container.NetworkMode("default")
}
}
return hc
}
示例3: modifyHostNetworkOptionForContainer
// 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
}
}
示例4: modifyHostNetworkOptionForSandbox
// modifyHostNetworkOptionForSandbox applies NetworkMode/UTSMode to sandbox's dockercontainer.HostConfig.
func modifyHostNetworkOptionForSandbox(hostNetwork bool, networkPlugin network.NetworkPlugin, hc *dockercontainer.HostConfig) {
if hostNetwork {
hc.NetworkMode = namespaceModeHost
return
}
if networkPlugin == nil {
hc.NetworkMode = "default"
return
}
switch networkPlugin.Name() {
case "cni":
fallthrough
case "kubenet":
hc.NetworkMode = "none"
default:
hc.NetworkMode = "default"
}
}
示例5: addNetNs
func (c *Container) addNetNs(config *container.HostConfig, service project.Service, containers []project.Container) (*container.HostConfig, error) {
if len(containers) == 0 {
return nil, fmt.Errorf("Failed to find container for networks ns %v", c.service.Config().Net)
}
id, err := containers[0].ID()
if err != nil {
return nil, err
}
config.NetworkMode = container.NetworkMode("container:" + id)
return config, nil
}
示例6: addNetNs
func addNetNs(config *containertypes.HostConfig, service project.Service, containers []project.Container, networkMode string) (*containertypes.HostConfig, error) {
if len(containers) == 0 {
return nil, fmt.Errorf("Failed to find container for networks ns %v", networkMode)
}
id, err := containers[0].ID()
if err != nil {
return nil, err
}
config.NetworkMode = containertypes.NetworkMode("container:" + id)
return config, nil
}
示例7: createContainer
// createContainer creates a new container using the specified
// options. Per the docker API, the created container is not running
// and must be started explicitly. Note that the passed-in hostConfig
// will be augmented with the necessary settings to use the network
// defined by l.createNetwork().
func createContainer(l *LocalCluster, containerConfig container.Config, hostConfig container.HostConfig, containerName string) (*Container, error) {
hostConfig.NetworkMode = container.NetworkMode(l.networkID)
// Disable DNS search under the host machine's domain. This can
// catch upstream wildcard DNS matching and result in odd behavior.
hostConfig.DNSSearch = []string{"."}
resp, err := l.client.ContainerCreate(&containerConfig, &hostConfig, nil, containerName)
if err != nil {
return nil, err
}
return &Container{
id: resp.ID,
name: containerName,
cluster: l,
}, nil
}
示例8: containerStart
func (c *Container) containerStart(name string, hostConfig *containertypes.HostConfig, bind bool) error {
var err error
// Get an API client to the portlayer
client := c.containerProxy.Client()
// Look up the container name in the metadata cache to get long ID
vc := cache.ContainerCache().GetContainer(name)
if vc == nil {
return NotFoundError(name)
}
id := vc.ContainerID
// handle legacy hostConfig
if hostConfig != nil {
// hostConfig exist for backwards compatibility. TODO: Figure out which parameters we
// need to look at in hostConfig
} else if vc != nil {
hostConfig = vc.HostConfig
}
if vc != nil && hostConfig.NetworkMode.NetworkName() == "" {
hostConfig.NetworkMode = vc.HostConfig.NetworkMode
}
// get a handle to the container
handle, err := c.Handle(id, name)
if err != nil {
return err
}
var endpoints []*models.EndpointConfig
// bind network
if bind {
var bindRes *scopes.BindContainerOK
bindRes, err = client.Scopes.BindContainer(scopes.NewBindContainerParamsWithContext(ctx).WithHandle(handle))
if err != nil {
switch err := err.(type) {
case *scopes.BindContainerNotFound:
cache.ContainerCache().DeleteContainer(id)
return NotFoundError(name)
case *scopes.BindContainerInternalServerError:
return InternalServerError(err.Payload.Message)
default:
return InternalServerError(err.Error())
}
}
handle = bindRes.Payload.Handle
endpoints = bindRes.Payload.Endpoints
// unbind in case we fail later
defer func() {
if err != nil {
client.Scopes.UnbindContainer(scopes.NewUnbindContainerParamsWithContext(ctx).WithHandle(handle))
}
}()
// unmap ports that vc needs if they're not being used by previously mapped container
err = c.cleanupPortBindings(vc)
if err != nil {
return err
}
}
// change the state of the container
// TODO: We need a resolved ID from the name
var stateChangeRes *containers.StateChangeOK
stateChangeRes, err = client.Containers.StateChange(containers.NewStateChangeParamsWithContext(ctx).WithHandle(handle).WithState("RUNNING"))
if err != nil {
switch err := err.(type) {
case *containers.StateChangeNotFound:
cache.ContainerCache().DeleteContainer(id)
return NotFoundError(name)
case *containers.StateChangeDefault:
return InternalServerError(err.Payload.Message)
default:
return InternalServerError(err.Error())
}
}
handle = stateChangeRes.Payload
// map ports
if bind {
e := c.findPortBoundNetworkEndpoint(hostConfig, endpoints)
if err = MapPorts(hostConfig, e, id); err != nil {
return InternalServerError(fmt.Sprintf("error mapping ports: %s", err))
}
defer func() {
if err != nil {
UnmapPorts(hostConfig)
}
}()
}
// commit the handle; this will reconfigure and start the vm
_, err = client.Containers.Commit(containers.NewCommitParamsWithContext(ctx).WithHandle(handle))
if err != nil {
//.........这里部分代码省略.........