Browse Source

Merge pull request #15472 from coolljt0725/fix_docker_ps_trucate_id

Fix docker ps truncate long image name
Vincent Demeester 9 years ago
parent
commit
830729bb94

+ 3 - 1
api/client/ps/custom.go

@@ -62,7 +62,9 @@ func (c *containerContext) Image() string {
 		return "<no image>"
 		return "<no image>"
 	}
 	}
 	if c.trunc {
 	if c.trunc {
-		return stringutils.Truncate(c.c.Image, 12)
+		if stringid.TruncateID(c.c.ImageID) == stringid.TruncateID(c.c.Image) {
+			return stringutils.Truncate(c.c.Image, 12)
+		}
 	}
 	}
 	return c.c.Image
 	return c.c.Image
 }
 }

+ 19 - 1
api/client/ps/custom_test.go

@@ -26,8 +26,26 @@ func TestContainerPsContext(t *testing.T) {
 		{types.Container{ID: containerID}, false, containerID, idHeader, ctx.ID},
 		{types.Container{ID: containerID}, false, containerID, idHeader, ctx.ID},
 		{types.Container{Names: []string{"/foobar_baz"}}, true, "foobar_baz", namesHeader, ctx.Names},
 		{types.Container{Names: []string{"/foobar_baz"}}, true, "foobar_baz", namesHeader, ctx.Names},
 		{types.Container{Image: "ubuntu"}, true, "ubuntu", imageHeader, ctx.Image},
 		{types.Container{Image: "ubuntu"}, true, "ubuntu", imageHeader, ctx.Image},
-		{types.Container{Image: "verylongimagename"}, true, "verylongimag", imageHeader, ctx.Image},
+		{types.Container{Image: "verylongimagename"}, true, "verylongimagename", imageHeader, ctx.Image},
 		{types.Container{Image: "verylongimagename"}, false, "verylongimagename", imageHeader, ctx.Image},
 		{types.Container{Image: "verylongimagename"}, false, "verylongimagename", imageHeader, ctx.Image},
+		{types.Container{
+			Image:   "a5a665ff33eced1e0803148700880edab4",
+			ImageID: "a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5",
+		},
+			true,
+			"a5a665ff33ec",
+			imageHeader,
+			ctx.Image,
+		},
+		{types.Container{
+			Image:   "a5a665ff33eced1e0803148700880edab4",
+			ImageID: "a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5",
+		},
+			false,
+			"a5a665ff33eced1e0803148700880edab4",
+			imageHeader,
+			ctx.Image,
+		},
 		{types.Container{Image: ""}, true, "<no image>", imageHeader, ctx.Image},
 		{types.Container{Image: ""}, true, "<no image>", imageHeader, ctx.Image},
 		{types.Container{Command: "sh -c 'ls -la'"}, true, `"sh -c 'ls -la'"`, commandHeader, ctx.Command},
 		{types.Container{Command: "sh -c 'ls -la'"}, true, `"sh -c 'ls -la'"`, commandHeader, ctx.Command},
 		{types.Container{Created: unix}, true, time.Unix(unix, 0).String(), createdAtHeader, ctx.CreatedAt},
 		{types.Container{Created: unix}, true, time.Unix(unix, 0).String(), createdAtHeader, ctx.CreatedAt},

+ 1 - 0
api/types/types.go

@@ -127,6 +127,7 @@ type Container struct {
 	ID         string `json:"Id"`
 	ID         string `json:"Id"`
 	Names      []string
 	Names      []string
 	Image      string
 	Image      string
+	ImageID    string
 	Command    string
 	Command    string
 	Created    int64
 	Created    int64
 	Ports      []Port
 	Ports      []Port

+ 3 - 2
daemon/list.go

@@ -288,8 +288,9 @@ func includeContainerInList(container *Container, ctx *listContext) iterationAct
 // transformContainer generates the container type expected by the docker ps command.
 // transformContainer generates the container type expected by the docker ps command.
 func (daemon *Daemon) transformContainer(container *Container, ctx *listContext) (*types.Container, error) {
 func (daemon *Daemon) transformContainer(container *Container, ctx *listContext) (*types.Container, error) {
 	newC := &types.Container{
 	newC := &types.Container{
-		ID:    container.ID,
-		Names: ctx.names[container.ID],
+		ID:      container.ID,
+		Names:   ctx.names[container.ID],
+		ImageID: container.ImageID,
 	}
 	}
 
 
 	img, err := daemon.Repositories().LookupImage(container.Config.Image)
 	img, err := daemon.Repositories().LookupImage(container.Config.Image)

+ 1 - 0
docs/reference/api/docker_remote_api.md

@@ -89,6 +89,7 @@ list of DNS options to be used in the container.
 * `POST /build` now optionally takes a serialized map of build-time variables.
 * `POST /build` now optionally takes a serialized map of build-time variables.
 * `GET /events` now includes a `timenano` field, in addition to the existing `time` field.
 * `GET /events` now includes a `timenano` field, in addition to the existing `time` field.
 * `GET /info` now lists engine version information.
 * `GET /info` now lists engine version information.
+* `GET /containers/json` will return `ImageID` of the image used by container.
 
 
 ### v1.20 API changes
 ### v1.20 API changes
 
 

+ 4 - 0
docs/reference/api/docker_remote_api_v1.21.md

@@ -47,6 +47,7 @@ List containers
                  "Id": "8dfafdbc3a40",
                  "Id": "8dfafdbc3a40",
                  "Names":["/boring_feynman"],
                  "Names":["/boring_feynman"],
                  "Image": "ubuntu:latest",
                  "Image": "ubuntu:latest",
+		 "ImageID": "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
                  "Command": "echo 1",
                  "Command": "echo 1",
                  "Created": 1367854155,
                  "Created": 1367854155,
                  "Status": "Exit 0",
                  "Status": "Exit 0",
@@ -63,6 +64,7 @@ List containers
                  "Id": "9cd87474be90",
                  "Id": "9cd87474be90",
                  "Names":["/coolName"],
                  "Names":["/coolName"],
                  "Image": "ubuntu:latest",
                  "Image": "ubuntu:latest",
+		 "ImageID": "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
                  "Command": "echo 222222",
                  "Command": "echo 222222",
                  "Created": 1367854155,
                  "Created": 1367854155,
                  "Status": "Exit 0",
                  "Status": "Exit 0",
@@ -75,6 +77,7 @@ List containers
                  "Id": "3176a2479c92",
                  "Id": "3176a2479c92",
                  "Names":["/sleepy_dog"],
                  "Names":["/sleepy_dog"],
                  "Image": "ubuntu:latest",
                  "Image": "ubuntu:latest",
+		 "ImageID": "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
                  "Command": "echo 3333333333333333",
                  "Command": "echo 3333333333333333",
                  "Created": 1367854154,
                  "Created": 1367854154,
                  "Status": "Exit 0",
                  "Status": "Exit 0",
@@ -87,6 +90,7 @@ List containers
                  "Id": "4cb07b47f9fb",
                  "Id": "4cb07b47f9fb",
                  "Names":["/running_cat"],
                  "Names":["/running_cat"],
                  "Image": "ubuntu:latest",
                  "Image": "ubuntu:latest",
+		 "ImageID": "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
                  "Command": "echo 444444444444444444444444444444444",
                  "Command": "echo 444444444444444444444444444444444",
                  "Created": 1367854152,
                  "Created": 1367854152,
                  "Status": "Exit 0",
                  "Status": "Exit 0",