From 0f6acff796f7b3c9b981dbcae6db6f255ee2055c Mon Sep 17 00:00:00 2001 From: Yong Tang Date: Mon, 29 Aug 2016 11:50:11 -0700 Subject: [PATCH] Add registry mirrors information in the output of `docker info` This fix tries to add the registry mirrors information in the output of `docker info`. In our active deployment, we use registry mirrors to help speeding up the `docker pull`. In the current output of `docker info`, registry mirrors is not present though it is available in `/info` API. I think it makes sense to add the registry mirrors to `docker info`, similiar to insecure registries. This fix adds the registry mirrors to the output of `docker info`: ``` Registry Mirrors: https://192.168.1.2/ http://registry.mirror.com:5000/ ``` An integration test has been added to cover the changes. Signed-off-by: Yong Tang --- api/client/system/info.go | 7 +++++++ integration-cli/docker_cli_info_test.go | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/api/client/system/info.go b/api/client/system/info.go index cec6c6ddff..89a4656b37 100644 --- a/api/client/system/info.go +++ b/api/client/system/info.go @@ -237,6 +237,13 @@ func prettyPrintInfo(dockerCli *client.DockerCli, info types.Info) error { } } + if info.RegistryConfig != nil && len(info.RegistryConfig.Mirrors) > 0 { + fmt.Fprintln(dockerCli.Out(), "Registry Mirrors:") + for _, mirror := range info.RegistryConfig.Mirrors { + fmt.Fprintf(dockerCli.Out(), " %s\n", mirror) + } + } + fmt.Fprintf(dockerCli.Out(), "Live Restore Enabled: %v\n", info.LiveRestoreEnabled) return nil diff --git a/integration-cli/docker_cli_info_test.go b/integration-cli/docker_cli_info_test.go index ac0c037cda..b87f52e530 100644 --- a/integration-cli/docker_cli_info_test.go +++ b/integration-cli/docker_cli_info_test.go @@ -200,3 +200,19 @@ func (s *DockerSuite) TestInsecureRegistries(c *check.C) { c.Assert(out, checker.Contains, fmt.Sprintf(" %s\n", registryHost)) c.Assert(out, checker.Contains, fmt.Sprintf(" %s\n", registryCIDR)) } + +func (s *DockerDaemonSuite) TestRegistryMirrors(c *check.C) { + testRequires(c, SameHostDaemon, DaemonIsLinux) + + registryMirror1 := "https://192.168.1.2" + registryMirror2 := "http://registry.mirror.com:5000" + + err := s.d.Start("--registry-mirror="+registryMirror1, "--registry-mirror="+registryMirror2) + c.Assert(err, checker.IsNil) + + out, err := s.d.Cmd("info") + c.Assert(err, checker.IsNil) + c.Assert(out, checker.Contains, "Registry Mirrors:\n") + c.Assert(out, checker.Contains, fmt.Sprintf(" %s", registryMirror1)) + c.Assert(out, checker.Contains, fmt.Sprintf(" %s", registryMirror2)) +}