mirror of
https://github.com/containers/podman.git
synced 2025-06-28 22:53:21 +08:00
Merge pull request #16745 from Luap99/docker-compose-mac
compat API: allow MacAddress on container config
This commit is contained in:
@ -287,6 +287,9 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
|
|||||||
NoHosts: rtc.Containers.NoHosts,
|
NoHosts: rtc.Containers.NoHosts,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sigh docker-compose sets the mac address on the container config instead on the per network endpoint config
|
||||||
|
containerMacAddress := cc.MacAddress
|
||||||
|
|
||||||
// network names
|
// network names
|
||||||
switch {
|
switch {
|
||||||
case len(cc.NetworkingConfig.EndpointsConfig) > 0:
|
case len(cc.NetworkingConfig.EndpointsConfig) > 0:
|
||||||
@ -331,6 +334,16 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
|
|||||||
return nil, nil, fmt.Errorf("failed to parse the mac address %q", endpoint.MacAddress)
|
return nil, nil, fmt.Errorf("failed to parse the mac address %q", endpoint.MacAddress)
|
||||||
}
|
}
|
||||||
netOpts.StaticMAC = types.HardwareAddr(staticMac)
|
netOpts.StaticMAC = types.HardwareAddr(staticMac)
|
||||||
|
} else if len(containerMacAddress) > 0 {
|
||||||
|
// docker-compose only sets one mac address for the container on the container config
|
||||||
|
// If there are more than one network attached it will end up on the first one,
|
||||||
|
// which is not deterministic since we iterate a map. Not nice but this matches docker.
|
||||||
|
staticMac, err := net.ParseMAC(containerMacAddress)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, fmt.Errorf("failed to parse the mac address %q", containerMacAddress)
|
||||||
|
}
|
||||||
|
netOpts.StaticMAC = types.HardwareAddr(staticMac)
|
||||||
|
containerMacAddress = ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ version: "3.2"
|
|||||||
services:
|
services:
|
||||||
test:
|
test:
|
||||||
image: alpine
|
image: alpine
|
||||||
|
mac_address: 32:b5:b2:55:48:72
|
||||||
networks:
|
networks:
|
||||||
net1:
|
net1:
|
||||||
ipv4_address: 10.123.0.253
|
ipv4_address: 10.123.0.253
|
||||||
|
@ -5,4 +5,6 @@ if [ "$TEST_FLAVOR" = "compose_v2" ]; then
|
|||||||
ctr_name="ipam_set_ip-test-1"
|
ctr_name="ipam_set_ip-test-1"
|
||||||
fi
|
fi
|
||||||
podman container inspect "$ctr_name" --format '{{ .NetworkSettings.Networks.ipam_set_ip_net1.IPAddress }}'
|
podman container inspect "$ctr_name" --format '{{ .NetworkSettings.Networks.ipam_set_ip_net1.IPAddress }}'
|
||||||
like "$output" "10.123.0.253" "$testname : ip address is set"
|
is "$output" "10.123.0.253" "$testname : ip address is set"
|
||||||
|
podman container inspect "$ctr_name" --format '{{ .NetworkSettings.Networks.ipam_set_ip_net1.MacAddress }}'
|
||||||
|
is "$output" "32:b5:b2:55:48:72" "$testname : mac address is set"
|
||||||
|
Reference in New Issue
Block a user