[docker compat] Don't overwrite the NetworkMode if containers.conf overrides netns.

Fixes #16915 (only the part about docker client).

Signed-off-by: Romain Geissler <romain.geissler@amadeus.com>
This commit is contained in:
Romain Geissler
2023-01-10 23:21:22 +00:00
parent 7c95a5df92
commit 3e2b9a28da
3 changed files with 29 additions and 2 deletions

View File

@ -262,10 +262,17 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
}
// special case for NetworkMode, the podman default is slirp4netns for
// rootless but for better docker compat we want bridge.
// rootless but for better docker compat we want bridge. Do this only if
// the default config in containers.conf wasn't overridden to use another
// value than the default "private" one.
netmode := string(cc.HostConfig.NetworkMode)
configDefaultNetNS := rtc.Containers.NetNS
if netmode == "" || netmode == "default" {
netmode = "bridge"
if configDefaultNetNS == "" || configDefaultNetNS == string(specgen.Default) || configDefaultNetNS == string(specgen.Private) {
netmode = "bridge"
} else {
netmode = configDefaultNetNS
}
}
nsmode, networks, netOpts, err := specgen.ParseNetworkFlag([]string{netmode}, false)

View File

@ -417,6 +417,24 @@ t GET containers/$cid/json 200 \
t DELETE containers/$cid?v=true 204
# test create with default netns="host"
stop_service
CONTAINERS_CONF=$TESTS_DIR/containers.host-netns.conf start_service
# check that the default docker netns "default" is rewritten to "host"
# when the containers.conf explicitly uses "host"
t POST containers/create Image=$IMAGE HostConfig='{"NetworkMode":"default"}' 201 \
.Id~[0-9a-f]\\{64\\}
cid=$(jq -r '.Id' <<<"$output")
t GET containers/$cid/json 200 \
.HostConfig.NetworkMode="host"
t DELETE containers/$cid?v=true 204
# Restart with the default containers.conf for next tests.
stop_service
start_service
# Test Compat Create with healthcheck, check default values
t POST containers/create Image=$IMAGE Cmd='["top"]' Healthcheck='{"Test":["true"]}' 201 \
.Id~[0-9a-f]\\{64\\}

View File

@ -0,0 +1,2 @@
[containers]
netns="host"