From ed9b6643ca31a5d75a1c01acbd5f808fb53d93cc Mon Sep 17 00:00:00 2001 From: Zettat123 Date: Tue, 9 May 2023 16:41:31 +0800 Subject: [PATCH] Do not set the default network to `host` (#55) In [nektos/act/pull/1739](https://github.com/nektos/act/pull/1739), the container network mode defaults to `host` if the network option isn't specified in `options`. When calling `ConnectToNetwork`, the `host` network mode may cause the error: `Error response from daemon: container sharing network namespace with another container or host cannot be connected to any other network` see the code: https://gitea.com/gitea/act/src/commit/a94a01bff2576fcf9fefaf879ea09c11e383cdab/pkg/container/docker_run.go#L51-L68 To avoid the error, this logic needs to be removed to keep the default network mode as `bridge`. Reviewed-on: https://gitea.com/gitea/act/pulls/55 Reviewed-by: Jason Song Co-authored-by: Zettat123 Co-committed-by: Zettat123 --- pkg/container/docker_run.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/container/docker_run.go b/pkg/container/docker_run.go index 4ff00a9..419369b 100644 --- a/pkg/container/docker_run.go +++ b/pkg/container/docker_run.go @@ -366,11 +366,15 @@ func (cr *containerReference) mergeContainerConfigs(ctx context.Context, config return nil, nil, fmt.Errorf("Cannot parse container options: '%s': '%w'", input.Options, err) } - if len(copts.netMode.Value()) == 0 { - if err = copts.netMode.Set("host"); err != nil { - return nil, nil, fmt.Errorf("Cannot parse networkmode=host. This is an internal error and should not happen: '%w'", err) - } - } + // If a service container's network is set to `host`, the container will not be able to + // connect to the specified network created for the job container and the service containers. + // So comment out the following code. + + // if len(copts.netMode.Value()) == 0 { + // if err = copts.netMode.Set("host"); err != nil { + // return nil, nil, fmt.Errorf("Cannot parse networkmode=host. This is an internal error and should not happen: '%w'", err) + // } + // } containerConfig, err := parse(flags, copts, "") if err != nil {