Skip to content

Commit 003a85e

Browse files
jasonjoo2010CMGS
authored andcommitted
Support specify ipv4 addr for container
1 parent 009ffba commit 003a85e

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

cluster/calcium/create.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -198,16 +198,16 @@ func (c *Calcium) doCreateAndStartContainer(
198198
// connect virtualizaion to network
199199
// if network manager uses plugin, then connect must be called before container starts
200200
// 如果有 networks 的配置,这里的 networkMode 就为 none 了
201-
if len(opts.Networks) > 0 {
202-
ctx := utils.ContextWithDockerEngine(ctx, node.Engine)
203-
// need to ensure all networks are correctly connected
204-
for networkID, ipv4 := range opts.Networks {
205-
if err = c.network.ConnectToNetwork(ctx, containerCreated.ID, networkID, ipv4); err != nil {
206-
createContainerMessage.Error = err
207-
return createContainerMessage
208-
}
209-
}
210-
}
201+
// if len(opts.Networks) > 0 {
202+
// ctx := utils.ContextWithDockerEngine(ctx, node.Engine)
203+
// // need to ensure all networks are correctly connected
204+
// for networkID, ipv4 := range opts.Networks {
205+
// if err = c.network.ConnectToNetwork(ctx, containerCreated.ID, networkID, ipv4); err != nil {
206+
// createContainerMessage.Error = err
207+
// return createContainerMessage
208+
// }
209+
// }
210+
// }
211211

212212
// Copy data to container
213213
if len(opts.Data) > 0 {
@@ -347,6 +347,7 @@ func (c *Calcium) doMakeContainerOptions(index int, cpumap types.CPUMap, opts *t
347347
// 没有 networks 的时候用 networkmode 的值
348348
// 有 networks 的时候一律用 none 作为默认 mode
349349
config.Network = opts.NetworkMode
350+
config.Networks = opts.Networks
350351
if len(opts.Networks) > 0 {
351352
for name := range opts.Networks {
352353
config.Network = name

engine/docker/container.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,20 @@ func (e *Engine) VirtualizationCreate(ctx context.Context, opts *enginetypes.Vir
9191
hostConfig.PortBindings = portMapping
9292
config.ExposedPorts = exposePorts
9393
}
94+
95+
networkConfig := &dockernetwork.NetworkingConfig{}
96+
if len(opts.Networks) > 0 {
97+
networkConfig.EndpointsConfig = map[string]*dockernetwork.EndpointSettings{}
98+
for networkID, ipv4 := range opts.Networks {
99+
networkConfig.EndpointsConfig[networkID] = &dockernetwork.EndpointSettings {
100+
IPAMConfig: &dockernetwork.EndpointIPAMConfig {
101+
IPv4Address: ipv4,
102+
},
103+
}
104+
}
105+
}
94106

95-
containerCreated, err := e.client.ContainerCreate(ctx, config, hostConfig, &dockernetwork.NetworkingConfig{}, opts.Name)
107+
containerCreated, err := e.client.ContainerCreate(ctx, config, hostConfig, networkConfig, opts.Name)
96108
r.Name = opts.Name
97109
r.ID = containerCreated.ID
98110
return r, err

engine/types/virtualization.go

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ type VirtualizationCreateOptions struct {
3939
RestartRetryCount int
4040

4141
Network string
42+
Networks map[string]string
4243
NetworkDisabled bool
4344

4445
Binds []string

0 commit comments

Comments
 (0)