Как использовать клиентский пакет Docker golang для подключения по TCP? - PullRequest
0 голосов
/ 16 марта 2020

Я создаю прототип приложения Go, которое в конечном итоге будет взаимодействовать с удаленным Docker хостом. Для этого я использую Docker Go клиентский пакет (документы в https://godoc.org/github.com/docker/docker/client).

Среда - Ubuntu 19.10 в VirtualBox 6.1.4, использующая Docker 19.03.6 и Go 1.14. Все пакеты Go были установлены с go get за последние 72 часа. В целях локального тестирования я пытаюсь подключиться к локальному хосту Docker по tcp: //0.0.0.0: 2375. То есть я запускаю

sudo dockerd -H tcp://0.0.0.0:2375

При этом такие команды, как

docker -H tcp://0.0.0.0:2375 ps

и

curl -k -v -i http://0.0.0.0:2375/v1.40/containers/json

оба работают, и я могу наблюдать трафик c через порт 2375 с Wireshark.

Однако попытка сделать то же самое через клиентский пакет Go не удается с

Невозможно подключиться к демону Docker по tcp: //0.0.0.0: 2375. Работает ли демон docker?

, и в Wireshark ничего не появляется. Вот пример Go code:

package main

import (
    "context"
    "fmt"
    "github.com/docker/docker/api/types"
    "github.com/docker/docker/client"
)

func main() {
    cli, err := client.NewClientWithOpts(client.WithHost("tcp://0.0.0.0:2375"), client.WithAPIVersionNegotiation())
    if err != nil {
        fmt.Println("error: could not create docker client handle")
        fmt.Println(err)
    }
    options := types.ContainerListOptions{}
    data, err := cli.ContainerList(context.Background(), options)
    if err != nil {
        fmt.Println("error: could not request containers list")
        fmt.Println(err)
    } else {
        fmt.Println(data)
    }
}

Попытки установить переменные среды DOCKER_HOST=tcp://0.0.0.0:2375, DOCKER_CERT_PATH= и DOCKER_TLS_VERIFY=, затем настроить дескриптор клиента через client.FromEnv(), также потерпели неудачу в точно так же.

Что я здесь не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...