diff --git a/api/client.go b/api/client.go index 2ea2dc44ea..24ba6d4914 100644 --- a/api/client.go +++ b/api/client.go @@ -37,6 +37,13 @@ import ( "time" ) +var funcMap = template.FuncMap{ + "json": func(v interface{}) string { + a, _ := json.Marshal(v) + return string(a) + }, +} + var ( ErrConnectionRefused = errors.New("Can't connect to docker daemon. Is 'docker -d' running on this host?") ) @@ -640,7 +647,7 @@ func (cli *DockerCli) CmdInspect(args ...string) error { var tmpl *template.Template if *tmplStr != "" { var err error - if tmpl, err = template.New("").Parse(*tmplStr); err != nil { + if tmpl, err = template.New("").Funcs(funcMap).Parse(*tmplStr); err != nil { fmt.Fprintf(cli.err, "Template parsing error: %v\n", err) return &utils.StatusError{StatusCode: 64, Status: "Template parsing error: " + err.Error()} diff --git a/docs/sources/reference/commandline/cli.rst b/docs/sources/reference/commandline/cli.rst index 06d57ad359..c8d8a75832 100644 --- a/docs/sources/reference/commandline/cli.rst +++ b/docs/sources/reference/commandline/cli.rst @@ -809,6 +809,19 @@ we ask for the ``HostPort`` field to get the public address. $ sudo docker inspect -format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}' $INSTANCE_ID +Get config +.......... + +The ``.Field`` syntax doesn't work when the field contains JSON data, +but the template language's custom ``json`` function does. The ``.config`` +section contains complex json object, so to grab it as JSON, you use ``json`` +to convert config object into JSON + +.. code-block:: bash + + $ sudo docker inspect -format='{{json .config}}' $INSTANCE_ID + + .. _cli_kill: ``kill``