diff --git a/docker/docker.go b/docker/docker.go index 4bfe735..052114c 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -219,7 +219,7 @@ type CreateContainerOpts struct { Privileged bool HostFQDN string Labels map[string]string - Networks map[string]string + Networks []string } func (d *docker) CreateContainer(opts CreateContainerOpts) error { @@ -286,17 +286,10 @@ func (d *docker) CreateContainer(opts CreateContainerOpts) error { Labels: opts.Labels, } - networkConf := &network.NetworkingConfig{} - ec := map[string]*network.EndpointSettings{} - for netId, hostname := range opts.Networks { - es := &network.EndpointSettings{} - if hostname != "" { - es.Aliases = []string{hostname} - } - ec[netId] = es + networkConf := &network.NetworkingConfig{ + EndpointsConfig: map[string]*network.EndpointSettings{opts.Networks[0]: &network.EndpointSettings{}}, } - networkConf.EndpointsConfig = ec container, err := d.c.ContainerCreate(context.Background(), cf, h, networkConf, opts.ContainerName) if err != nil { @@ -314,6 +307,16 @@ func (d *docker) CreateContainer(opts CreateContainerOpts) error { } } + //connect remaining networks if there are any + if len(opts.Networks) > 1 { + for _, nid := range opts.Networks { + err := d.c.NetworkConnect(context.Background(), nid, container.ID, &network.EndpointSettings{}) + if err != nil { + return "", err + } + } + } + if err := d.copyIfSet(opts.ServerCert, "cert.pem", containerCertDir, opts.ContainerName); err != nil { return err } diff --git a/provisioner/dind.go b/provisioner/dind.go index 477aee0..25d1bac 100644 --- a/provisioner/dind.go +++ b/provisioner/dind.go @@ -64,7 +64,7 @@ func (d *DinD) InstanceNew(session *types.Session, conf types.InstanceConfig) (* CACert: conf.CACert, HostFQDN: conf.Host, Privileged: true, - Networks: map[string]string{session.Id: conf.Hostname}, + Networks: []string{session.Id}, } dockerClient, err := d.factory.GetForSession(session.Id) diff --git a/provisioner/windows.go b/provisioner/windows.go index e99f5e9..f1daa66 100644 --- a/provisioner/windows.go +++ b/provisioner/windows.go @@ -82,7 +82,7 @@ func (d *windows) InstanceNew(session *types.Session, conf types.InstanceConfig) CACert: conf.CACert, Privileged: false, HostFQDN: conf.Host, - Networks: map[string]string{session.Id: conf.Hostname}, + Networks: []string{session.Id}, } dockerClient, err := d.factory.GetForSession(session.Id)