为了账号安全,请及时绑定邮箱和手机立即绑定

Docker 容器内的 Docker golang 客户端

Docker 容器内的 Docker golang 客户端

Go
慕娘9325324 2023-05-15 10:09:01
我正在尝试使用docker go 客户端连接到谷歌容器注册表以列出和删除图像。我的 golang 应用程序也存在于 docker 容器中。这是我的 golang 应用程序的 dockerfile:FROM docker:latestUSER rootRUN apk add --update opensslADD ./data /app/dataADD ./data/docker /app/data/dockerADD mygolangapp /appRUN chmod -R a+rwx ./app/data/docker/generate_docker_cert.shRUN sh ./app/data/docker/generate_docker_cert.shENV GOOGLE_APPLICATION_CREDENTIALS ./app/data/myserviceaccount.jsonENV DOCKER_CONFIG ./app/data/dockerENV 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-compose 中添加了 docker.sock 作为卷,但它不起作用?mygolangapp:  build: ./mygolangapp  volumes:    - /var/run/docker.sock:/var/run/docker.sock我的问题是:如何在谷歌容器注册表的 golang 应用程序中使用 docker golang 客户端。我在这里做错了什么或错过了什么?DOCKER_HOST 应该是什么?
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信