登录
首页 >  Golang >  Go问答

如何在 Golang 中指定我的 Docker API 设置?

来源:stackoverflow

时间:2024-04-13 22:54:32 352浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《如何在 Golang 中指定我的 Docker API 设置?》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我已经在远程 ubuntu 服务器上的 2375 端口上启用了 api。我想开发一个从远程使用 docker api 的 go 应用程序。在示例和教程中,我看不到任何指定 docker api 服务器设置的选项部分。可能是这样正在从环境变量中获取它。(https://docs.docker.com/v17.09/develop/sdk/examples/#run-a-container)

下面的代码有此代码部分:

cli, err := client.newenvclient()

我认为这里是采用 docker api 设置。

我是一名新手程序员,感谢您的帮助。

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)
}

解决方案


我使用 docker_host 环境来指向我的 docker api 地址并且它正在工作

export DOCKER_HOST=tcp://:

今天关于《如何在 Golang 中指定我的 Docker API 设置?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>