Merge pull request #17064 from Romain-Geissler-1A/docker-compat-networkmode

[docker compat] Don't overwrite the NetworkMode from "default" to "bridge" if containers.conf specifies a non-default configuration.
This commit is contained in:
OpenShift Merge Robot 2023-01-11 18:44:15 -05:00 committed by GitHub
commit 39ffcb8c31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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"