diff --git a/commands.go b/commands.go index 3fda195e17..bebab65481 100644 --- a/commands.go +++ b/commands.go @@ -879,7 +879,7 @@ func (cli *DockerCli) CmdHistory(args ...string) error { } for _, out := range outs.Data { - outID := out.Get("ID") + outID := out.Get("Id") if !*quiet { if *noTrunc { fmt.Fprintf(w, "%s\t", outID) @@ -1171,7 +1171,7 @@ func (cli *DockerCli) CmdImages(args ...string) error { } if filter != "" { - if filter == image.Get("ID") || filter == utils.TruncateID(image.Get("ID")) { + if filter == image.Get("Id") || filter == utils.TruncateID(image.Get("Id")) { startImage = image } @@ -1229,7 +1229,7 @@ func (cli *DockerCli) CmdImages(args ...string) error { for _, repotag := range out.GetList("RepoTags") { repo, tag := utils.ParseRepositoryTag(repotag) - outID := out.Get("ID") + outID := out.Get("Id") if !*noTrunc { outID = utils.TruncateID(outID) } @@ -1255,12 +1255,12 @@ func (cli *DockerCli) WalkTree(noTrunc bool, images *engine.Table, byParent map[ for index, image := range images.Data { if index+1 == length { printNode(cli, noTrunc, image, prefix+"└─") - if subimages, exists := byParent[image.Get("ID")]; exists { + if subimages, exists := byParent[image.Get("Id")]; exists { cli.WalkTree(noTrunc, subimages, byParent, prefix+" ", printNode) } } else { printNode(cli, noTrunc, image, prefix+"\u251C─") - if subimages, exists := byParent[image.Get("ID")]; exists { + if subimages, exists := byParent[image.Get("Id")]; exists { cli.WalkTree(noTrunc, subimages, byParent, prefix+"\u2502 ", printNode) } } @@ -1268,7 +1268,7 @@ func (cli *DockerCli) WalkTree(noTrunc bool, images *engine.Table, byParent map[ } else { for _, image := range images.Data { printNode(cli, noTrunc, image, prefix+"└─") - if subimages, exists := byParent[image.Get("ID")]; exists { + if subimages, exists := byParent[image.Get("Id")]; exists { cli.WalkTree(noTrunc, subimages, byParent, prefix+" ", printNode) } } @@ -1281,10 +1281,10 @@ func (cli *DockerCli) printVizNode(noTrunc bool, image *engine.Env, prefix strin parentID string ) if noTrunc { - imageID = image.Get("ID") + imageID = image.Get("Id") parentID = image.Get("ParentId") } else { - imageID = utils.TruncateID(image.Get("ID")) + imageID = utils.TruncateID(image.Get("Id")) parentID = utils.TruncateID(image.Get("ParentId")) } if parentID == "" { @@ -1301,9 +1301,9 @@ func (cli *DockerCli) printVizNode(noTrunc bool, image *engine.Env, prefix strin func (cli *DockerCli) printTreeNode(noTrunc bool, image *engine.Env, prefix string) { var imageID string if noTrunc { - imageID = image.Get("ID") + imageID = image.Get("Id") } else { - imageID = utils.TruncateID(image.Get("ID")) + imageID = utils.TruncateID(image.Get("Id")) } fmt.Fprintf(cli.out, "%s%s Virtual Size: %s", prefix, imageID, utils.HumanSize(image.GetInt64("VirtualSize"))) @@ -1382,7 +1382,7 @@ func (cli *DockerCli) CmdPs(args ...string) error { for _, out := range outs.Data { var ( - outID = out.Get("ID") + outID = out.Get("Id") outNames = out.GetList("Names") ) diff --git a/docs/sources/installation/binaries.rst b/docs/sources/installation/binaries.rst index 9b741d6918..976e94e344 100644 --- a/docs/sources/installation/binaries.rst +++ b/docs/sources/installation/binaries.rst @@ -12,18 +12,22 @@ Binaries **This instruction set is meant for hackers who want to try out Docker on a variety of environments.** -Before following these directions, you should really check if a packaged version -of Docker is already available for your distribution. We have packages for many -distributions, and more keep showing up all the time! +Before following these directions, you should really check if a +packaged version of Docker is already available for your distribution. +We have packages for many distributions, and more keep showing up all +the time! Check runtime dependencies -------------------------- +.. DOC COMMENT: this should be kept in sync with + https://github.com/dotcloud/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies + To run properly, docker needs the following software to be installed at runtime: -- GNU Tar version 1.26 or later -- iproute2 version 3.5 or later (build after 2012-05-21), and specifically the "ip" utility +- iproute2 version 3.5 or later (build after 2012-05-21), and + specifically the "ip" utility - iptables version 1.4 or later - The LXC utility scripts (http://lxc.sourceforge.net) version 0.8 or later - Git version 1.7 or later @@ -33,11 +37,11 @@ To run properly, docker needs the following software to be installed at runtime: Check kernel dependencies ------------------------- -Docker in daemon mode has specific kernel requirements. For details, see -http://docs.docker.io/en/latest/articles/kernel/ +Docker in daemon mode has specific kernel requirements. For details, +check your distribution in :ref:`installation_list`. -Note that Docker also has a client mode, which can run on virtually any linux kernel (it even builds -on OSX!). +Note that Docker also has a client mode, which can run on virtually +any linux kernel (it even builds on OSX!). Get the docker binary: @@ -63,18 +67,18 @@ Run the docker daemon Giving non-root access ---------------------- -The ``docker`` daemon always runs as the root user, and since Docker version -0.5.2, the ``docker`` daemon binds to a Unix socket instead of a TCP port. By -default that Unix socket is owned by the user *root*, and so, by default, you -can access it with ``sudo``. +The ``docker`` daemon always runs as the root user, and since Docker +version 0.5.2, the ``docker`` daemon binds to a Unix socket instead of +a TCP port. By default that Unix socket is owned by the user *root*, +and so, by default, you can access it with ``sudo``. Starting in version 0.5.3, if you (or your Docker installer) create a Unix group called *docker* and add users to it, then the ``docker`` daemon will make the ownership of the Unix socket read/writable by the *docker* group when the daemon starts. The ``docker`` daemon must -always run as the root user, but if you run the ``docker`` client as a user in -the *docker* group then you don't need to add ``sudo`` to all the -client commands. +always run as the root user, but if you run the ``docker`` client as a +user in the *docker* group then you don't need to add ``sudo`` to all +the client commands. .. warning:: The *docker* group is root-equivalent. @@ -82,7 +86,8 @@ client commands. Upgrades -------- -To upgrade your manual installation of Docker, first kill the docker daemon: +To upgrade your manual installation of Docker, first kill the docker +daemon: .. code-block:: bash diff --git a/docs/sources/reference/commandline/cli.rst b/docs/sources/reference/commandline/cli.rst index 491688027f..a4d3022867 100644 --- a/docs/sources/reference/commandline/cli.rst +++ b/docs/sources/reference/commandline/cli.rst @@ -811,6 +811,8 @@ Known Issues (kill) * :issue:`197` indicates that ``docker kill`` may leave directories behind and make it difficult to remove the container. +* :issue:`3844` lxc 1.0.0 beta3 removed ``lcx-kill`` which is used by Docker versions before 0.8.0; + see the issue for a workaround. .. _cli_load: diff --git a/integration/api_test.go b/integration/api_test.go index ad631f97e2..82de56a8ba 100644 --- a/integration/api_test.go +++ b/integration/api_test.go @@ -202,7 +202,7 @@ func TestGetImagesJSON(t *testing.T) { } assertHttpNotError(r2, t) - images2 := engine.NewTable("ID", 0) + images2 := engine.NewTable("Id", 0) if _, err := images2.ReadListFrom(r2.Body.Bytes()); err != nil { t.Fatal(err) } @@ -213,7 +213,7 @@ func TestGetImagesJSON(t *testing.T) { found = false for _, img := range images2.Data { - if img.Get("ID") == unitTestImageID { + if img.Get("Id") == unitTestImageID { found = true break } @@ -235,7 +235,7 @@ func TestGetImagesJSON(t *testing.T) { } assertHttpNotError(r3, t) - images3 := engine.NewTable("ID", 0) + images3 := engine.NewTable("Id", 0) if _, err := images3.ReadListFrom(r3.Body.Bytes()); err != nil { t.Fatal(err) } @@ -334,7 +334,7 @@ func TestGetContainersJSON(t *testing.T) { if len(containers.Data) != beginLen+1 { t.Fatalf("Expected %d container, %d found (started with: %d)", beginLen+1, len(containers.Data), beginLen) } - if id := containers.Data[0].Get("ID"); id != containerID { + if id := containers.Data[0].Get("Id"); id != containerID { t.Fatalf("Container ID mismatch. Expected: %s, received: %s\n", containerID, id) } } diff --git a/integration/runtime_test.go b/integration/runtime_test.go index 4fc3c56868..9afc10f5af 100644 --- a/integration/runtime_test.go +++ b/integration/runtime_test.go @@ -60,8 +60,8 @@ func cleanup(eng *engine.Engine, t *testing.T) error { t.Fatal(err) } for _, image := range images.Data { - if image.Get("ID") != unitTestImageID { - eng.Job("image_delete", image.Get("ID")).Run() + if image.Get("Id") != unitTestImageID { + eng.Job("image_delete", image.Get("Id")).Run() } } return nil diff --git a/integration/server_test.go b/integration/server_test.go index b0ad3d903b..c3371ce8bf 100644 --- a/integration/server_test.go +++ b/integration/server_test.go @@ -288,7 +288,7 @@ func TestRestartKillWait(t *testing.T) { } setTimeout(t, "Waiting on stopped container timedout", 5*time.Second, func() { - job = srv.Eng.Job("wait", outs.Data[0].Get("ID")) + job = srv.Eng.Job("wait", outs.Data[0].Get("Id")) var statusStr string job.Stdout.AddString(&statusStr) if err := job.Run(); err != nil { @@ -472,7 +472,7 @@ func TestRmi(t *testing.T) { } for _, image := range images.Data { - if strings.Contains(unitTestImageID, image.Get("ID")) { + if strings.Contains(unitTestImageID, image.Get("Id")) { continue } if image.GetList("RepoTags")[0] == ":" { @@ -650,7 +650,7 @@ func assertContainerList(srv *docker.Server, all bool, limit int, since, before return false } for i := 0; i < len(outs.Data); i++ { - if outs.Data[i].Get("ID") != expected[i] { + if outs.Data[i].Get("Id") != expected[i] { return false } } diff --git a/server.go b/server.go index 36bd670776..3561e76abd 100644 --- a/server.go +++ b/server.go @@ -777,7 +777,7 @@ func (srv *Server) Images(job *engine.Job) engine.Status { delete(allImages, id) out.Set("ParentId", image.Parent) out.SetList("RepoTags", []string{fmt.Sprintf("%s:%s", name, tag)}) - out.Set("ID", image.ID) + out.Set("Id", image.ID) out.SetInt64("Created", image.Created.Unix()) out.SetInt64("Size", image.Size) out.SetInt64("VirtualSize", image.getParentsSize(0)+image.Size) @@ -798,7 +798,7 @@ func (srv *Server) Images(job *engine.Job) engine.Status { out := &engine.Env{} out.Set("ParentId", image.Parent) out.SetList("RepoTags", []string{":"}) - out.Set("ID", image.ID) + out.Set("Id", image.ID) out.SetInt64("Created", image.Created.Unix()) out.SetInt64("Size", image.Size) out.SetInt64("VirtualSize", image.getParentsSize(0)+image.Size) @@ -880,7 +880,7 @@ func (srv *Server) ImageHistory(job *engine.Job) engine.Status { outs := engine.NewTable("Created", 0) err = image.WalkHistory(func(img *Image) error { out := &engine.Env{} - out.Set("ID", img.ID) + out.Set("Id", img.ID) out.SetInt64("Created", img.Created.Unix()) out.Set("CreatedBy", strings.Join(img.ContainerConfig.Cmd, " ")) out.SetList("Tags", lookupMap[img.ID]) @@ -1028,7 +1028,7 @@ func (srv *Server) Containers(job *engine.Job) engine.Status { } displayed++ out := &engine.Env{} - out.Set("ID", container.ID) + out.Set("Id", container.ID) out.SetList("Names", names[container.ID]) out.Set("Image", srv.runtime.repositories.ImageName(container.Image)) out.Set("Command", fmt.Sprintf("%s %s", container.Path, strings.Join(container.Args, " ")))