From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/docker/engine%2Fapi%2Fsdk%2Findex.html | 81 ++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 devdocs/docker/engine%2Fapi%2Fsdk%2Findex.html (limited to 'devdocs/docker/engine%2Fapi%2Fsdk%2Findex.html') diff --git a/devdocs/docker/engine%2Fapi%2Fsdk%2Findex.html b/devdocs/docker/engine%2Fapi%2Fsdk%2Findex.html new file mode 100644 index 00000000..d3b76c78 --- /dev/null +++ b/devdocs/docker/engine%2Fapi%2Fsdk%2Findex.html @@ -0,0 +1,81 @@ +

Develop with Docker Engine SDKs

+ +

Docker provides an API for interacting with the Docker daemon (called the Docker Engine API), as well as SDKs for Go and Python. The SDKs allow you to build and scale Docker apps and solutions quickly and easily. If Go or Python don’t work for you, you can use the Docker Engine API directly.

The Docker Engine API is a RESTful API accessed by an HTTP client such as wget or curl, or the HTTP library which is part of most modern programming languages.

Install the SDKs

Use the following commands to install the Go or Python SDK. Both SDKs can be installed and coexist together.

Go SDK

$ go get github.com/docker/docker/client
+

The client requires a recent version of Go. Run go version and ensure that you are running a currently supported version of Go

Read the full Docker Engine Go SDK reference.

Python SDK

Read the full Docker Engine Python SDK reference.

View the API reference

You can view the reference for the latest version of the API or choose a specific version.

Versioned API and SDK

The version of the Docker Engine API you should use depends upon the version of your Docker daemon and Docker client. Refer to the versioned API and SDK section in the API documentation for details.

SDK and API quickstart

Use the following guidelines to choose the SDK or API version to use in your code:

As an example, the docker run command can be easily implemented using the Docker API directly, or using the Python or Go SDK.

package main
+
+import (
+	"context"
+	"io"
+	"os"
+
+	"github.com/docker/docker/api/types"
+	"github.com/docker/docker/api/types/container"
+	"github.com/docker/docker/client"
+	"github.com/docker/docker/pkg/stdcopy"
+)
+
+func main() {
+    ctx := context.Background()
+    cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
+    if err != nil {
+        panic(err)
+    }
+
+    reader, err := cli.ImagePull(ctx, "docker.io/library/alpine", types.ImagePullOptions{})
+    if err != nil {
+        panic(err)
+    }
+    io.Copy(os.Stdout, reader)
+
+    resp, err := cli.ContainerCreate(ctx, &container.Config{
+        Image: "alpine",
+        Cmd:   []string{"echo", "hello world"},
+    }, nil, nil, nil, "")
+    if err != nil {
+        panic(err)
+    }
+
+    if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
+        panic(err)
+    }
+
+    statusCh, errCh := cli.ContainerWait(ctx, resp.ID, container.WaitConditionNotRunning)
+    select {
+    case err := <-errCh:
+        if err != nil {
+            panic(err)
+        }
+    case <-statusCh:
+    }
+
+    out, err := cli.ContainerLogs(ctx, resp.ID, types.ContainerLogsOptions{ShowStdout: true})
+    if err != nil {
+        panic(err)
+    }
+
+    stdcopy.StdCopy(os.Stdout, os.Stderr, out)
+}
+
import docker
+client = docker.from_env()
+print client.containers.run("alpine", ["echo", "hello", "world"])
+
$ curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" \
+  -d '{"Image": "alpine", "Cmd": ["echo", "hello world"]}' \
+  -X POST http://localhost/v1.41/containers/create
+{"Id":"1c6594faf5","Warnings":null}
+
+$ curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/1c6594faf5/start
+
+$ curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/1c6594faf5/wait
+{"StatusCode":0}
+
+$ curl --unix-socket /var/run/docker.sock "http://localhost/v1.41/containers/1c6594faf5/logs?stdout=1"
+hello world
+

When using cURL to connect over a unix socket, the hostname is not important. The examples above use localhost, but any hostname would work.

Using cURL 7.47.0 or below?

The examples above assume you are using cURL 7.50.0 or above. Older versions of cURL used a non-standard URL notation when using a socket connection.

If you are using an older version of cURL, use http:/<API version>/ instead, for example, http:/v1.41/containers/1c6594faf5/start

For more examples, take a look at the SDK examples.

Unofficial libraries

There are a number of community supported libraries available for other languages. They have not been tested by Docker, so if you run into any issues, file them with the library maintainers.

Language Library
C libdocker
C# Docker.DotNet
C++ lasote/docker_client
Clojure clj-docker-client
Clojure contajners
Dart bwu_docker
Erlang erldocker
Gradle gradle-docker-plugin
Groovy docker-client
Haskell docker-hs
HTML (Web Components) docker-elements
Java docker-client
Java docker-java
Java docker-java-api
Java jocker
NodeJS dockerode
NodeJS harbor-master
Perl Eixo::Docker
PHP Docker-PHP
Ruby docker-api
Rust docker-rust
Rust shiplift
Scala tugboat
Scala reactive-docker
Swift docker-client-swift
+

developing, sdk

+
+

+ © 2019 Docker, Inc.
Licensed under the Apache License, Version 2.0.
Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries.
Docker, Inc. and other parties may also have trademark rights in other terms used herein.
+ https://docs.docker.com/engine/api/sdk/ +

+
-- cgit v1.2.3