зеркало из https://github.com/microsoft/docker.git
Hotfix: Migrate public mappings after upgrade
This commit is contained in:
Родитель
caa7cf14c0
Коммит
746ba127bf
|
@ -1054,10 +1054,13 @@ func (container *Container) allocateNetwork(hostConfig *HostConfig) error {
|
|||
|
||||
if container.Config.PortSpecs != nil {
|
||||
utils.Debugf("Migrating port mappings for container: %s", strings.Join(container.Config.PortSpecs, ", "))
|
||||
if err := migratePortMappings(container.Config); err != nil {
|
||||
if err := migratePortMappings(container.Config, hostConfig); err != nil {
|
||||
return err
|
||||
}
|
||||
container.Config.PortSpecs = nil
|
||||
if err := container.SaveHostConfig(hostConfig); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
portSpecs := make(map[Port]struct{})
|
||||
|
|
12
utils.go
12
utils.go
|
@ -265,15 +265,19 @@ func parsePort(rawPort string) (int, error) {
|
|||
return int(port), nil
|
||||
}
|
||||
|
||||
func migratePortMappings(config *Config) error {
|
||||
func migratePortMappings(config *Config, hostConfig *HostConfig) error {
|
||||
if config.PortSpecs != nil {
|
||||
// We don't have to worry about migrating the bindings to the host
|
||||
// This is our breaking change
|
||||
ports, _, err := parsePortSpecs(config.PortSpecs)
|
||||
ports, bindings, err := parsePortSpecs(config.PortSpecs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
config.PortSpecs = nil
|
||||
if len(bindings) > 0 {
|
||||
if hostConfig == nil {
|
||||
hostConfig = &HostConfig{}
|
||||
}
|
||||
hostConfig.PortBindings = bindings
|
||||
}
|
||||
|
||||
if config.ExposedPorts == nil {
|
||||
config.ExposedPorts = make(map[Port]struct{}, len(ports))
|
||||
|
|
Загрузка…
Ссылка в новой задаче