123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- // Copyright 2015 go-dockerclient authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package docker
- import (
- "encoding/json"
- "strings"
- )
- // Version returns version information about the docker server.
- //
- // See https://goo.gl/ND9R8L for more details.
- func (c *Client) Version() (*Env, error) {
- resp, err := c.do("GET", "/version", doOptions{})
- if err != nil {
- return nil, err
- }
- defer resp.Body.Close()
- var env Env
- if err := env.Decode(resp.Body); err != nil {
- return nil, err
- }
- return &env, nil
- }
- // DockerInfo contains information about the Docker server
- //
- // See https://goo.gl/bHUoz9 for more details.
- type DockerInfo struct {
- ID string
- Containers int
- ContainersRunning int
- ContainersPaused int
- ContainersStopped int
- Images int
- Driver string
- DriverStatus [][2]string
- SystemStatus [][2]string
- Plugins PluginsInfo
- MemoryLimit bool
- SwapLimit bool
- KernelMemory bool
- CPUCfsPeriod bool `json:"CpuCfsPeriod"`
- CPUCfsQuota bool `json:"CpuCfsQuota"`
- CPUShares bool
- CPUSet bool
- IPv4Forwarding bool
- BridgeNfIptables bool
- BridgeNfIP6tables bool `json:"BridgeNfIp6tables"`
- Debug bool
- NFd int
- OomKillDisable bool
- NGoroutines int
- SystemTime string
- ExecutionDriver string
- LoggingDriver string
- CgroupDriver string
- NEventsListener int
- KernelVersion string
- OperatingSystem string
- OSType string
- Architecture string
- IndexServerAddress string
- NCPU int
- MemTotal int64
- DockerRootDir string
- HTTPProxy string `json:"HttpProxy"`
- HTTPSProxy string `json:"HttpsProxy"`
- NoProxy string
- Name string
- Labels []string
- ExperimentalBuild bool
- ServerVersion string
- ClusterStore string
- ClusterAdvertise string
- }
- // PluginsInfo is a struct with the plugins registered with the docker daemon
- //
- // for more information, see: https://goo.gl/bHUoz9
- type PluginsInfo struct {
- // List of Volume plugins registered
- Volume []string
- // List of Network plugins registered
- Network []string
- // List of Authorization plugins registered
- Authorization []string
- }
- // Info returns system-wide information about the Docker server.
- //
- // See https://goo.gl/ElTHi2 for more details.
- func (c *Client) Info() (*DockerInfo, error) {
- resp, err := c.do("GET", "/info", doOptions{})
- if err != nil {
- return nil, err
- }
- defer resp.Body.Close()
- var info DockerInfo
- if err := json.NewDecoder(resp.Body).Decode(&info); err != nil {
- return nil, err
- }
- return &info, nil
- }
- // ParseRepositoryTag gets the name of the repository and returns it splitted
- // in two parts: the repository and the tag.
- //
- // Some examples:
- //
- // localhost.localdomain:5000/samalba/hipache:latest -> localhost.localdomain:5000/samalba/hipache, latest
- // localhost.localdomain:5000/samalba/hipache -> localhost.localdomain:5000/samalba/hipache, ""
- func ParseRepositoryTag(repoTag string) (repository string, tag string) {
- n := strings.LastIndex(repoTag, ":")
- if n < 0 {
- return repoTag, ""
- }
- if tag := repoTag[n+1:]; !strings.Contains(tag, "/") {
- return repoTag[:n], tag
- }
- return repoTag, ""
- }
|