登录
首页 >  Golang >  Go问答

Docker容器中运行的Golang客户端

来源:stackoverflow

时间:2024-03-04 19:24:28 102浏览 收藏

大家好,我们又见面了啊~本文《Docker容器中运行的Golang客户端》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我正在尝试使用 docker go 客户端连接到 google 容器注册表以列出和删除图像。我的 golang 应用程序也存在于 docker 容器中。

这是我的 golang 应用程序的 dockerfile:

from docker:latest

user root

run apk add --update openssl

add ./data /app/data
add ./data/docker /app/data/docker
add mygolangapp /app

run chmod -r a+rwx ./app/data/docker/generate_docker_cert.sh
run sh ./app/data/docker/generate_docker_cert.sh

env google_application_credentials ./app/data/myserviceaccount.json
env docker_config ./app/data/docker
env docker_cert_path .
env docker_host ????????

entrypoint ["/app/mygolangapp"]

这是generate_docker_cert.sh文件 (https://gist.github.com/bradrydzewski/a6090115b3fecfc25280)

这是我的 golang 代码,用于创建 docker go 客户端并列出容器。

jsonbytes, err := ioutil.readfile(os.getenv("google_application_credentials"))
if err != nil {
    panic(err)
}

dockercli, err := client.newenvclient()
if err != nil {
    panic(err)
}

dockercli.registrylogin(context.background(), types.authconfig{
    username:      "_json_key",
    password:      string(jsonbytes),
    serveraddress: "https://eu.gcr.io",
})

containers, err := dockercli.containerlist(context.background(), types.containerlistoptions{})
if err != nil {
    panic(err)
}

for _, container := range containers {
    fmt.printf("%s %s\n", container.id[:10], container.image)
}

目前我收到此错误:

error during connect: get https://%2fvar%2frun%2fdocker.sock/v1.25/containers/json?limit=0: dial tcp: lookup /var/run/docker.sock: no such host

所以我将 docker.sock 添加为我的 docker-compose 中的卷,但它不起作用?

mygolangapp:
  build: ./mygolangapp
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock

我的问题是:如何在 golang 应用程序中使用 docker golang 客户端来进行 google 容器注册表。我在这里做错了什么或错过了什么? docker_host 应该是什么?

感谢您的帮助。任何其他方法都非常受欢迎!


解决方案


作为潜在的替代方案,您可以探索 google/go-containerregistry 库:https://github.com/google/go-containerregistry

看起来您正在尝试实现某种垃圾收集工具。如果是这样,您还可以在此处查看如何使用该库的示例:https://github.com/google/go-containerregistry/pull/300

今天关于《Docker容器中运行的Golang客户端》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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