瀏覽代碼

'docker run' accepts layer names (it will look up the most recently added layer of that name)

Solomon Hykes 12 年之前
父節點
當前提交
4c5eb22cb2
共有 1 個文件被更改,包括 6 次插入1 次删除
  1. 6 1
      dockerd/dockerd.go

+ 6 - 1
dockerd/dockerd.go

@@ -211,8 +211,13 @@ func (docker *Docker) CmdRun(stdin io.ReadCloser, stdout io.Writer, args ...stri
 		BytesChanged: uint(rand.Int31n(24 * 1024 * 1024)),
 		BytesChanged: uint(rand.Int31n(24 * 1024 * 1024)),
 	}
 	}
 	for _, name := range *fl_layers {
 	for _, name := range *fl_layers {
+		// 1: look for layer by ID
 		if layer, exists := docker.layers[name]; !exists {
 		if layer, exists := docker.layers[name]; !exists {
-			if srcContainer, exists := docker.containers[name]; exists {
+			// 2: look for a layer by name (and pick the most recent)
+			if layers, exists := docker.layersByName[name]; exists {
+				container.Layers = append(container.Layers, *(*layers)[0])
+			// 3: look for container by name (and copy its layers)
+			} else if srcContainer, exists := docker.containers[name]; exists {
 				for _, layer := range srcContainer.Layers {
 				for _, layer := range srcContainer.Layers {
 					container.Layers = append(container.Layers, layer)
 					container.Layers = append(container.Layers, layer)
 				}
 				}