| package client | |
| import ( | |
| "context" | |
| "encoding/json" | |
| "github.com/moby/moby/api/types/system" | |
| ) | |
| // ServerVersionOptions specifies options for the server version request. | |
| type ServerVersionOptions struct { | |
| // Currently no options are supported. | |
| } | |
| // ServerVersionResult contains information about the Docker server host. | |
| type ServerVersionResult struct { | |
| // Platform is the platform (product name) the server is running on. | |
| Platform PlatformInfo | |
| // Version is the version of the daemon. | |
| Version string | |
| // APIVersion is the highest API version supported by the server. | |
| APIVersion string | |
| // MinAPIVersion is the minimum API version the server supports. | |
| MinAPIVersion string | |
| // Os is the operating system the server runs on. | |
| Os string | |
| // Arch is the hardware architecture the server runs on. | |
| Arch string | |
| // Experimental indicates that the daemon runs with experimental | |
| // features enabled. | |
| // | |
| // Deprecated: this field will be removed in the next version. | |
| Experimental bool | |
| // Components contains version information for the components making | |
| // up the server. Information in this field is for informational | |
| // purposes, and not part of the API contract. | |
| Components []system.ComponentVersion | |
| } | |
| // PlatformInfo holds information about the platform (product name) the | |
| // server is running on. | |
| type PlatformInfo struct { | |
| // Name is the name of the platform (for example, "Docker Engine - Community", | |
| // or "Docker Desktop 4.49.0 (208003)") | |
| Name string | |
| } | |
| // ServerVersion returns information of the Docker server host. | |
| func (cli *Client) ServerVersion(ctx context.Context, _ ServerVersionOptions) (ServerVersionResult, error) { | |
| resp, err := cli.get(ctx, "/version", nil, nil) | |
| defer ensureReaderClosed(resp) | |
| if err != nil { | |
| return ServerVersionResult{}, err | |
| } | |
| var v system.VersionResponse | |
| err = json.NewDecoder(resp.Body).Decode(&v) | |
| if err != nil { | |
| return ServerVersionResult{}, err | |
| } | |
| return ServerVersionResult{ | |
| Platform: PlatformInfo{ | |
| Name: v.Platform.Name, | |
| }, | |
| Version: v.Version, | |
| APIVersion: v.APIVersion, | |
| MinAPIVersion: v.MinAPIVersion, | |
| Os: v.Os, | |
| Arch: v.Arch, | |
| Experimental: v.Experimental, //nolint:staticcheck // ignore deprecated field. | |
| Components: v.Components, | |
| }, nil | |
| } |