From f0661843841336a48fe5dcd5fe043f72f7a96094 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Mon, 17 Nov 2014 19:23:41 +0000 Subject: [PATCH 1/5] add ID and Hostname in docker info Signed-off-by: Victor Vieux Upstream-commit: 9a85f60c75f2017b14ed5e7f2bae5dc4961cb74c Component: engine --- components/engine/api/client/commands.go | 6 ++++++ components/engine/api/common.go | 25 ++++++++++++++++++++++++ components/engine/daemon/config.go | 1 + components/engine/daemon/daemon.go | 8 ++++++++ components/engine/daemon/info.go | 4 ++++ components/engine/docker/daemon.go | 2 ++ 6 files changed, 46 insertions(+) diff --git a/components/engine/api/client/commands.go b/components/engine/api/client/commands.go index 60487265ae..4f6f71d6d0 100644 --- a/components/engine/api/client/commands.go +++ b/components/engine/api/client/commands.go @@ -505,6 +505,12 @@ func (cli *DockerCli) CmdInfo(args ...string) error { if remoteInfo.Exists("MemTotal") { fmt.Fprintf(cli.out, "Total Memory: %s\n", units.BytesSize(float64(remoteInfo.GetInt64("MemTotal")))) } + if remoteInfo.Exists("Hostname") { + fmt.Fprintf(cli.out, "Hostname: %s\n", remoteInfo.Get("Hostname")) + } + if remoteInfo.Exists("ID") { + fmt.Fprintf(cli.out, "ID: %s\n", remoteInfo.Get("ID")) + } if remoteInfo.GetBool("Debug") || os.Getenv("DEBUG") != "" { if remoteInfo.Exists("Debug") { diff --git a/components/engine/api/common.go b/components/engine/api/common.go index b151552412..52e67caa13 100644 --- a/components/engine/api/common.go +++ b/components/engine/api/common.go @@ -3,12 +3,15 @@ package api import ( "fmt" "mime" + "os" + "path" "strings" log "github.com/Sirupsen/logrus" "github.com/docker/docker/engine" "github.com/docker/docker/pkg/parsers" "github.com/docker/docker/pkg/version" + "github.com/docker/docker/vendor/src/github.com/docker/libtrust" ) const ( @@ -47,3 +50,25 @@ func MatchesContentType(contentType, expectedType string) bool { } return err == nil && mimetype == expectedType } + +// LoadOrCreateTrustKey attempts to load the libtrust key at the given path, +// otherwise generates a new one +func LoadOrCreateTrustKey(trustKeyPath string) (libtrust.PrivateKey, error) { + err := os.MkdirAll(path.Dir(trustKeyPath), 0700) + if err != nil { + return nil, err + } + trustKey, err := libtrust.LoadKeyFile(trustKeyPath) + if err == libtrust.ErrKeyFileDoesNotExist { + trustKey, err = libtrust.GenerateECP256PrivateKey() + if err != nil { + return nil, fmt.Errorf("Error generating key: %s", err) + } + if err := libtrust.SaveKey(trustKeyPath, trustKey); err != nil { + return nil, fmt.Errorf("Error saving key file: %s", err) + } + } else if err != nil { + log.Fatalf("Error loading key file: %s", err) + } + return trustKey, nil +} diff --git a/components/engine/daemon/config.go b/components/engine/daemon/config.go index 0876ce0802..cbdd95da00 100644 --- a/components/engine/daemon/config.go +++ b/components/engine/daemon/config.go @@ -40,6 +40,7 @@ type Config struct { DisableNetwork bool EnableSelinuxSupport bool Context map[string][]string + TrustKeyPath string } // InstallFlags adds command-line options to the top-level flag parser for diff --git a/components/engine/daemon/daemon.go b/components/engine/daemon/daemon.go index 145a466486..84628be729 100644 --- a/components/engine/daemon/daemon.go +++ b/components/engine/daemon/daemon.go @@ -15,6 +15,7 @@ import ( "github.com/docker/libcontainer/label" log "github.com/Sirupsen/logrus" + "github.com/docker/docker/api" "github.com/docker/docker/daemon/execdriver" "github.com/docker/docker/daemon/execdriver/execdrivers" "github.com/docker/docker/daemon/execdriver/lxc" @@ -83,6 +84,7 @@ func (c *contStore) List() []*Container { } type Daemon struct { + ID string repository string sysInitPath string containers *contStore @@ -893,7 +895,13 @@ func NewDaemonFromDirectory(config *Config, eng *engine.Engine) (*Daemon, error) return nil, err } + trustKey, err := api.LoadOrCreateTrustKey(config.TrustKeyPath) + if err != nil { + return nil, err + } + daemon := &Daemon{ + ID: trustKey.PublicKey().KeyID(), repository: daemonRepo, containers: &contStore{s: make(map[string]*Container)}, execCommands: newExecStore(), diff --git a/components/engine/daemon/info.go b/components/engine/daemon/info.go index 78a22c9443..c05c2a569d 100644 --- a/components/engine/daemon/info.go +++ b/components/engine/daemon/info.go @@ -56,6 +56,7 @@ func (daemon *Daemon) CmdInfo(job *engine.Job) engine.Status { return job.Error(err) } v := &engine.Env{} + v.Set("ID", daemon.ID) v.SetInt("Containers", len(daemon.List())) v.SetInt("Images", imgcount) v.Set("Driver", daemon.GraphDriver().String()) @@ -75,6 +76,9 @@ func (daemon *Daemon) CmdInfo(job *engine.Job) engine.Status { v.Set("InitPath", initPath) v.SetInt("NCPU", runtime.NumCPU()) v.SetInt64("MemTotal", meminfo.MemTotal) + if hostname, err := os.Hostname(); err == nil { + v.Set("Hostname", hostname) + } if _, err := v.WriteTo(job.Stdout); err != nil { return job.Error(err) } diff --git a/components/engine/docker/daemon.go b/components/engine/docker/daemon.go index dbf1f05617..3128f7ee55 100644 --- a/components/engine/docker/daemon.go +++ b/components/engine/docker/daemon.go @@ -34,6 +34,8 @@ func mainDaemon() { eng := engine.New() signal.Trap(eng.Shutdown) + daemonCfg.TrustKeyPath = *flTrustKey + // Load builtins if err := builtins.Register(eng); err != nil { log.Fatal(err) From 9554f43a2c8fd2f912d79a41d674c88feaf788da Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Mon, 17 Nov 2014 19:26:39 +0000 Subject: [PATCH 2/5] add docs Signed-off-by: Victor Vieux Upstream-commit: 8545155c41b1ccc22056733539660b1afa6790ef Component: engine --- .../engine/docs/sources/reference/api/docker_remote_api.md | 5 +++-- .../docs/sources/reference/api/docker_remote_api_v1.16.md | 2 ++ components/engine/docs/sources/reference/commandline/cli.md | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/components/engine/docs/sources/reference/api/docker_remote_api.md b/components/engine/docs/sources/reference/api/docker_remote_api.md index 5813091411..046e953b37 100644 --- a/components/engine/docs/sources/reference/api/docker_remote_api.md +++ b/components/engine/docs/sources/reference/api/docker_remote_api.md @@ -49,8 +49,9 @@ You can still call an old version of the API using `GET /info` **New!** -`info` now returns the number of CPUs available on the machine (`NCPU`) and -total memory available (`MemTotal`). +`info` now returns the number of CPUs available on the machine (`NCPU`), +total memory available (`MemTotal`), the short hostname (`Hostname`). and +the ID (`ID`). `POST /containers/create` diff --git a/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md b/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md index db07a97a6e..5e78e02ffb 100644 --- a/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md +++ b/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md @@ -1220,6 +1220,8 @@ Display system-wide information "KernelVersion":"3.12.0-1-amd64" "NCPU":1, "MemTotal":2099236864, + "Hostname":"prod-server-42", + "ID":"7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS" "Debug":false, "NFd": 11, "NGoroutines":21, diff --git a/components/engine/docs/sources/reference/commandline/cli.md b/components/engine/docs/sources/reference/commandline/cli.md index 7526954b12..24271a2c6e 100644 --- a/components/engine/docs/sources/reference/commandline/cli.md +++ b/components/engine/docs/sources/reference/commandline/cli.md @@ -856,6 +856,8 @@ For example: Kernel Version: 3.13.0-24-generic Operating System: Ubuntu 14.04 LTS CPUs: 1 + Hostname: prod-server-42 + ID: 7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS Total Memory: 2 GiB Debug mode (server): false Debug mode (client): true From 4b4f9725e6c6619f92b72862f8a9b59f1bc87073 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Mon, 17 Nov 2014 19:39:55 +0000 Subject: [PATCH 3/5] Update libtrust version Signed-off-by: Victor Vieux Upstream-commit: 6e92dfdfd843aec909572a405337efb25beb6f58 Component: engine --- components/engine/api/common.go | 2 +- components/engine/integration/utils_test.go | 2 ++ components/engine/project/vendor.sh | 2 +- .../src/github.com/docker/libtrust/ec_key.go | 11 +-------- .../src/github.com/docker/libtrust/filter.go | 24 ++++++++++++------- .../github.com/docker/libtrust/filter_test.go | 6 +++-- .../docker/libtrust/key_files_test.go | 4 ++-- .../src/github.com/docker/libtrust/rsa_key.go | 11 +-------- .../libtrust/trustgraph/statement_test.go | 4 ++-- .../src/github.com/docker/libtrust/util.go | 16 +++++++++++++ .../github.com/docker/libtrust/util_test.go | 23 ++++++++++++++++++ 11 files changed, 68 insertions(+), 37 deletions(-) create mode 100644 components/engine/vendor/src/github.com/docker/libtrust/util_test.go diff --git a/components/engine/api/common.go b/components/engine/api/common.go index 52e67caa13..3a46a8a523 100644 --- a/components/engine/api/common.go +++ b/components/engine/api/common.go @@ -68,7 +68,7 @@ func LoadOrCreateTrustKey(trustKeyPath string) (libtrust.PrivateKey, error) { return nil, fmt.Errorf("Error saving key file: %s", err) } } else if err != nil { - log.Fatalf("Error loading key file: %s", err) + return nil, fmt.Errorf("Error loading key file: %s", err) } return trustKey, nil } diff --git a/components/engine/integration/utils_test.go b/components/engine/integration/utils_test.go index deb6a337a6..0c78a76170 100644 --- a/components/engine/integration/utils_test.go +++ b/components/engine/integration/utils_test.go @@ -9,6 +9,7 @@ import ( "net/http/httptest" "os" "path" + "path/filepath" "strings" "testing" "time" @@ -187,6 +188,7 @@ func newTestEngine(t Fataler, autorestart bool, root string) *engine.Engine { // Either InterContainerCommunication or EnableIptables must be set, // otherwise NewDaemon will fail because of conflicting settings. InterContainerCommunication: true, + TrustKeyPath: filepath.Join(root, "key.json"), } d, err := daemon.NewDaemon(cfg, eng) if err != nil { diff --git a/components/engine/project/vendor.sh b/components/engine/project/vendor.sh index 4c0b09fed1..1911583cab 100755 --- a/components/engine/project/vendor.sh +++ b/components/engine/project/vendor.sh @@ -51,7 +51,7 @@ clone hg code.google.com/p/go.net 84a4013f96e0 clone hg code.google.com/p/gosqlite 74691fb6f837 -clone git github.com/docker/libtrust d273ef2565ca +clone git github.com/docker/libtrust 230dfd18c232 clone git github.com/Sirupsen/logrus v0.6.0 diff --git a/components/engine/vendor/src/github.com/docker/libtrust/ec_key.go b/components/engine/vendor/src/github.com/docker/libtrust/ec_key.go index c7ac6844cf..f642acbcfa 100644 --- a/components/engine/vendor/src/github.com/docker/libtrust/ec_key.go +++ b/components/engine/vendor/src/github.com/docker/libtrust/ec_key.go @@ -55,16 +55,7 @@ func (k *ecPublicKey) CurveName() string { // KeyID returns a distinct identifier which is unique to this Public Key. func (k *ecPublicKey) KeyID() string { - // Generate and return a libtrust fingerprint of the EC public key. - // For an EC key this should be: - // SHA256("EC"+curveName+bytes(X)+bytes(Y)) - // Then truncated to 240 bits and encoded into 12 base32 groups like so: - // ABCD:EFGH:IJKL:MNOP:QRST:UVWX:YZ23:4567:ABCD:EFGH:IJKL:MNOP - hasher := crypto.SHA256.New() - hasher.Write([]byte(k.KeyType() + k.CurveName())) - hasher.Write(k.X.Bytes()) - hasher.Write(k.Y.Bytes()) - return keyIDEncode(hasher.Sum(nil)[:30]) + return keyIDFromCryptoKey(k) } func (k *ecPublicKey) String() string { diff --git a/components/engine/vendor/src/github.com/docker/libtrust/filter.go b/components/engine/vendor/src/github.com/docker/libtrust/filter.go index 945852afc8..5b2b4fca6f 100644 --- a/components/engine/vendor/src/github.com/docker/libtrust/filter.go +++ b/components/engine/vendor/src/github.com/docker/libtrust/filter.go @@ -11,9 +11,21 @@ func FilterByHosts(keys []PublicKey, host string, includeEmpty bool) ([]PublicKe filtered := make([]PublicKey, 0, len(keys)) for _, pubKey := range keys { - hosts, ok := pubKey.GetExtendedField("hosts").([]interface{}) + var hosts []string + switch v := pubKey.GetExtendedField("hosts").(type) { + case []string: + hosts = v + case []interface{}: + for _, value := range v { + h, ok := value.(string) + if !ok { + continue + } + hosts = append(hosts, h) + } + } - if !ok || (ok && len(hosts) == 0) { + if len(hosts) == 0 { if includeEmpty { filtered = append(filtered, pubKey) } @@ -21,12 +33,7 @@ func FilterByHosts(keys []PublicKey, host string, includeEmpty bool) ([]PublicKe } // Check if any hosts match pattern - for _, hostVal := range hosts { - hostPattern, ok := hostVal.(string) - if !ok { - continue - } - + for _, hostPattern := range hosts { match, err := filepath.Match(hostPattern, host) if err != nil { return nil, err @@ -37,7 +44,6 @@ func FilterByHosts(keys []PublicKey, host string, includeEmpty bool) ([]PublicKe continue } } - } return filtered, nil diff --git a/components/engine/vendor/src/github.com/docker/libtrust/filter_test.go b/components/engine/vendor/src/github.com/docker/libtrust/filter_test.go index b24e3322e6..997e554c04 100644 --- a/components/engine/vendor/src/github.com/docker/libtrust/filter_test.go +++ b/components/engine/vendor/src/github.com/docker/libtrust/filter_test.go @@ -27,6 +27,8 @@ func TestFilter(t *testing.T) { t.Fatal(err) } + // we use both []interface{} and []string here because jwt uses + // []interface{} format, while PEM uses []string switch { case i == 0: // Don't add entries for this key, key 0. @@ -36,10 +38,10 @@ func TestFilter(t *testing.T) { key.AddExtendedField("hosts", []interface{}{"*.even.example.com"}) case i == 7: // Should catch only the last key, and make it match any hostname. - key.AddExtendedField("hosts", []interface{}{"*"}) + key.AddExtendedField("hosts", []string{"*"}) default: // should catch keys 1, 3, 5. - key.AddExtendedField("hosts", []interface{}{"*.example.com"}) + key.AddExtendedField("hosts", []string{"*.example.com"}) } keys = append(keys, key) diff --git a/components/engine/vendor/src/github.com/docker/libtrust/key_files_test.go b/components/engine/vendor/src/github.com/docker/libtrust/key_files_test.go index 66c71dd43f..57e691f2ed 100644 --- a/components/engine/vendor/src/github.com/docker/libtrust/key_files_test.go +++ b/components/engine/vendor/src/github.com/docker/libtrust/key_files_test.go @@ -138,7 +138,7 @@ func testTrustedHostKeysFile(t *testing.T, trustedHostKeysFilename string) { } for addr, hostKey := range trustedHostKeysMapping { - t.Logf("Host Address: %s\n", addr) + t.Logf("Host Address: %d\n", addr) t.Logf("Host Key: %s\n\n", hostKey) } @@ -160,7 +160,7 @@ func testTrustedHostKeysFile(t *testing.T, trustedHostKeysFilename string) { } for addr, hostKey := range trustedHostKeysMapping { - t.Logf("Host Address: %s\n", addr) + t.Logf("Host Address: %d\n", addr) t.Logf("Host Key: %s\n\n", hostKey) } diff --git a/components/engine/vendor/src/github.com/docker/libtrust/rsa_key.go b/components/engine/vendor/src/github.com/docker/libtrust/rsa_key.go index 45463039d2..ecb15b56f3 100644 --- a/components/engine/vendor/src/github.com/docker/libtrust/rsa_key.go +++ b/components/engine/vendor/src/github.com/docker/libtrust/rsa_key.go @@ -34,16 +34,7 @@ func (k *rsaPublicKey) KeyType() string { // KeyID returns a distinct identifier which is unique to this Public Key. func (k *rsaPublicKey) KeyID() string { - // Generate and return a 'libtrust' fingerprint of the RSA public key. - // For an RSA key this should be: - // SHA256("RSA"+bytes(N)+bytes(E)) - // Then truncated to 240 bits and encoded into 12 base32 groups like so: - // ABCD:EFGH:IJKL:MNOP:QRST:UVWX:YZ23:4567:ABCD:EFGH:IJKL:MNOP - hasher := crypto.SHA256.New() - hasher.Write([]byte(k.KeyType())) - hasher.Write(k.N.Bytes()) - hasher.Write(serializeRSAPublicExponentParam(k.E)) - return keyIDEncode(hasher.Sum(nil)[:30]) + return keyIDFromCryptoKey(k) } func (k *rsaPublicKey) String() string { diff --git a/components/engine/vendor/src/github.com/docker/libtrust/trustgraph/statement_test.go b/components/engine/vendor/src/github.com/docker/libtrust/trustgraph/statement_test.go index d9c3c1a1ea..e509468659 100644 --- a/components/engine/vendor/src/github.com/docker/libtrust/trustgraph/statement_test.go +++ b/components/engine/vendor/src/github.com/docker/libtrust/trustgraph/statement_test.go @@ -201,7 +201,7 @@ func TestCollapseGrants(t *testing.T) { collapsedGrants, expiration, err := CollapseStatements(statements, false) if len(collapsedGrants) != 12 { - t.Fatalf("Unexpected number of grants\n\tExpected: %d\n\tActual: %s", 12, len(collapsedGrants)) + t.Fatalf("Unexpected number of grants\n\tExpected: %d\n\tActual: %d", 12, len(collapsedGrants)) } if expiration.After(time.Now().Add(time.Hour*5)) || expiration.Before(time.Now()) { t.Fatalf("Unexpected expiration time: %s", expiration.String()) @@ -261,7 +261,7 @@ func TestCollapseGrants(t *testing.T) { collapsedGrants, expiration, err = CollapseStatements(statements, false) if len(collapsedGrants) != 12 { - t.Fatalf("Unexpected number of grants\n\tExpected: %d\n\tActual: %s", 12, len(collapsedGrants)) + t.Fatalf("Unexpected number of grants\n\tExpected: %d\n\tActual: %d", 12, len(collapsedGrants)) } if expiration.After(time.Now().Add(time.Hour*5)) || expiration.Before(time.Now()) { t.Fatalf("Unexpected expiration time: %s", expiration.String()) diff --git a/components/engine/vendor/src/github.com/docker/libtrust/util.go b/components/engine/vendor/src/github.com/docker/libtrust/util.go index 3b2fac95b1..4d5a6200a8 100644 --- a/components/engine/vendor/src/github.com/docker/libtrust/util.go +++ b/components/engine/vendor/src/github.com/docker/libtrust/util.go @@ -2,6 +2,7 @@ package libtrust import ( "bytes" + "crypto" "crypto/elliptic" "crypto/x509" "encoding/base32" @@ -52,6 +53,21 @@ func keyIDEncode(b []byte) string { return buf.String() } +func keyIDFromCryptoKey(pubKey PublicKey) string { + // Generate and return a 'libtrust' fingerprint of the public key. + // For an RSA key this should be: + // SHA256(DER encoded ASN1) + // Then truncated to 240 bits and encoded into 12 base32 groups like so: + // ABCD:EFGH:IJKL:MNOP:QRST:UVWX:YZ23:4567:ABCD:EFGH:IJKL:MNOP + derBytes, err := x509.MarshalPKIXPublicKey(pubKey.CryptoPublicKey()) + if err != nil { + return "" + } + hasher := crypto.SHA256.New() + hasher.Write(derBytes) + return keyIDEncode(hasher.Sum(nil)[:30]) +} + func stringFromMap(m map[string]interface{}, key string) (string, error) { val, ok := m[key] if !ok { diff --git a/components/engine/vendor/src/github.com/docker/libtrust/util_test.go b/components/engine/vendor/src/github.com/docker/libtrust/util_test.go new file mode 100644 index 0000000000..ee54f5b8cc --- /dev/null +++ b/components/engine/vendor/src/github.com/docker/libtrust/util_test.go @@ -0,0 +1,23 @@ +package libtrust + +import ( + "encoding/pem" + "reflect" + "testing" +) + +func TestAddPEMHeadersToKey(t *testing.T) { + pk := &rsaPublicKey{nil, map[string]interface{}{}} + blk := &pem.Block{Headers: map[string]string{"hosts": "localhost,127.0.0.1"}} + addPEMHeadersToKey(blk, pk) + + val := pk.GetExtendedField("hosts") + hosts, ok := val.([]string) + if !ok { + t.Fatalf("hosts type(%v), expected []string", reflect.TypeOf(val)) + } + expected := []string{"localhost", "127.0.0.1"} + if !reflect.DeepEqual(hosts, expected) { + t.Errorf("hosts(%v), expected %v", hosts, expected) + } +} From addb2d43fa98034610f9170beffcd348bca77ead Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Mon, 17 Nov 2014 21:54:11 +0000 Subject: [PATCH 4/5] Hostname -> Name Signed-off-by: Victor Vieux Upstream-commit: 227f4bbdb3a1e9ff0011d1ebaed39b3cb19d9e75 Component: engine --- components/engine/api/client/commands.go | 4 ++-- components/engine/daemon/info.go | 2 +- .../engine/docs/sources/reference/api/docker_remote_api.md | 3 +-- .../docs/sources/reference/api/docker_remote_api_v1.16.md | 2 +- components/engine/docs/sources/reference/commandline/cli.md | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/components/engine/api/client/commands.go b/components/engine/api/client/commands.go index 4f6f71d6d0..c930885bb9 100644 --- a/components/engine/api/client/commands.go +++ b/components/engine/api/client/commands.go @@ -505,8 +505,8 @@ func (cli *DockerCli) CmdInfo(args ...string) error { if remoteInfo.Exists("MemTotal") { fmt.Fprintf(cli.out, "Total Memory: %s\n", units.BytesSize(float64(remoteInfo.GetInt64("MemTotal")))) } - if remoteInfo.Exists("Hostname") { - fmt.Fprintf(cli.out, "Hostname: %s\n", remoteInfo.Get("Hostname")) + if remoteInfo.Exists("Name") { + fmt.Fprintf(cli.out, "Name: %s\n", remoteInfo.Get("Name")) } if remoteInfo.Exists("ID") { fmt.Fprintf(cli.out, "ID: %s\n", remoteInfo.Get("ID")) diff --git a/components/engine/daemon/info.go b/components/engine/daemon/info.go index c05c2a569d..bb7f450698 100644 --- a/components/engine/daemon/info.go +++ b/components/engine/daemon/info.go @@ -77,7 +77,7 @@ func (daemon *Daemon) CmdInfo(job *engine.Job) engine.Status { v.SetInt("NCPU", runtime.NumCPU()) v.SetInt64("MemTotal", meminfo.MemTotal) if hostname, err := os.Hostname(); err == nil { - v.Set("Hostname", hostname) + v.Set("Name", hostname) } if _, err := v.WriteTo(job.Stdout); err != nil { return job.Error(err) diff --git a/components/engine/docs/sources/reference/api/docker_remote_api.md b/components/engine/docs/sources/reference/api/docker_remote_api.md index 046e953b37..898cb571ea 100644 --- a/components/engine/docs/sources/reference/api/docker_remote_api.md +++ b/components/engine/docs/sources/reference/api/docker_remote_api.md @@ -50,8 +50,7 @@ You can still call an old version of the API using **New!** `info` now returns the number of CPUs available on the machine (`NCPU`), -total memory available (`MemTotal`), the short hostname (`Hostname`). and -the ID (`ID`). +total memory available (`MemTotal`), a name (`Name`), and the ID (`ID`). `POST /containers/create` diff --git a/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md b/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md index 5e78e02ffb..03c28820d4 100644 --- a/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md +++ b/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md @@ -1220,7 +1220,7 @@ Display system-wide information "KernelVersion":"3.12.0-1-amd64" "NCPU":1, "MemTotal":2099236864, - "Hostname":"prod-server-42", + "Name":"prod-server-42", "ID":"7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS" "Debug":false, "NFd": 11, diff --git a/components/engine/docs/sources/reference/commandline/cli.md b/components/engine/docs/sources/reference/commandline/cli.md index 24271a2c6e..2cc47b8bba 100644 --- a/components/engine/docs/sources/reference/commandline/cli.md +++ b/components/engine/docs/sources/reference/commandline/cli.md @@ -856,7 +856,7 @@ For example: Kernel Version: 3.13.0-24-generic Operating System: Ubuntu 14.04 LTS CPUs: 1 - Hostname: prod-server-42 + Name: prod-server-42 ID: 7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS Total Memory: 2 GiB Debug mode (server): false From 7a40da10bf5c65655231344961280a645b7fbbf7 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Mon, 17 Nov 2014 22:06:03 +0000 Subject: [PATCH 5/5] update docs Signed-off-by: Victor Vieux Upstream-commit: 8ef36dcfe75752a5705813e2d9fa9359a8162b18 Component: engine --- .../engine/docs/sources/reference/api/docker_remote_api.md | 2 +- .../docs/sources/reference/api/docker_remote_api_v1.16.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/engine/docs/sources/reference/api/docker_remote_api.md b/components/engine/docs/sources/reference/api/docker_remote_api.md index 898cb571ea..353f04b501 100644 --- a/components/engine/docs/sources/reference/api/docker_remote_api.md +++ b/components/engine/docs/sources/reference/api/docker_remote_api.md @@ -50,7 +50,7 @@ You can still call an old version of the API using **New!** `info` now returns the number of CPUs available on the machine (`NCPU`), -total memory available (`MemTotal`), a name (`Name`), and the ID (`ID`). +total memory available (`MemTotal`), a user-friendly name describing the running Docker daemon (`Name`), and a unique ID identifying the daemon (`ID`). `POST /containers/create` diff --git a/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md b/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md index 03c28820d4..9ae057d3ba 100644 --- a/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md +++ b/components/engine/docs/sources/reference/api/docker_remote_api_v1.16.md @@ -1221,7 +1221,7 @@ Display system-wide information "NCPU":1, "MemTotal":2099236864, "Name":"prod-server-42", - "ID":"7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS" + "ID":"7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS", "Debug":false, "NFd": 11, "NGoroutines":21,