commit: do not change container labels on commit

Fix #29547

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
This commit is contained in:
Alexander Morozov 2016-12-19 09:56:20 -08:00
Родитель 38886bbd74
Коммит ca6c6f0765
2 изменённых файлов: 16 добавлений и 4 удалений

Просмотреть файл

@ -65,11 +65,10 @@ func merge(userConf, imageConf *containertypes.Config) error {
if userConf.Labels == nil {
userConf.Labels = map[string]string{}
}
if imageConf.Labels != nil {
for l := range userConf.Labels {
imageConf.Labels[l] = userConf.Labels[l]
for l, v := range imageConf.Labels {
if _, ok := userConf.Labels[l]; !ok {
userConf.Labels[l] = v
}
userConf.Labels = imageConf.Labels
}
if len(userConf.Entrypoint) == 0 {

Просмотреть файл

@ -142,3 +142,16 @@ func (s *DockerSuite) TestCommitChange(c *check.C) {
}
}
}
func (s *DockerSuite) TestCommitChangeLabels(c *check.C) {
dockerCmd(c, "run", "--name", "test", "--label", "some=label", "busybox", "true")
imageID, _ := dockerCmd(c, "commit",
"--change", "LABEL some=label2",
"test", "test-commit")
imageID = strings.TrimSpace(imageID)
c.Assert(inspectField(c, imageID, "Config.Labels"), checker.Equals, "map[some:label2]")
// check that container labels didn't change
c.Assert(inspectField(c, "test", "Config.Labels"), checker.Equals, "map[some:label]")
}