Как я могу указать мои Docker настройки API в Golang? - PullRequest
0 голосов
/ 28 января 2020

Я включил API на своем удаленном сервере Ubuntu на порту 2375. Я хочу разработать приложение go, использующее API Docker с удаленного компьютера. В примерах и руководствах я не вижу ни одного раздела параметров, в котором указано Docker Настройки сервера API. Вероятно, он берет его из переменных среды. (https://docs.docker.com/v17.09/develop/sdk/examples/#run -a-container )

Ниже приведен код раздела:

cli, err: = client.NewEnvClient ()

Я думаю, что здесь используются настройки API Docker.

Я новичок ie и благодарю вас за любые помощь.

package main

import (
    "io"
    "os"

    "github.com/docker/docker/api/types"
    "github.com/docker/docker/api/types/container"
    "github.com/docker/docker/client"
    "golang.org/x/net/context"
)

func main() {
    ctx := context.Background()
    cli, err := client.NewEnvClient()
    if err != nil {
        panic(err)
    }

    _, err = cli.ImagePull(ctx, "docker.io/library/alpine", types.ImagePullOptions{})
    if err != nil {
        panic(err)
    }

    resp, err := cli.ContainerCreate(ctx, &container.Config{
        Image: "alpine",
        Cmd:   []string{"echo", "hello world"},
    }, 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)
    }

    io.Copy(os.Stdout, out)
}

1 Ответ

0 голосов
/ 28 января 2020

Я использовал окружение DOCKER_HOST, чтобы указать мой docker адрес API, и он работает

export DOCKER_HOST=tcp://<my-docker-ip>:<port>
...