merge master
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
This commit is contained in:
commit
b881a6c3c2
7 changed files with 48 additions and 41 deletions
22
commands.go
22
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")
|
||||
)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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] == "<none>:<none>" {
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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{"<none>:<none>"})
|
||||
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, " ")))
|
||||
|
|
Loading…
Reference in a new issue