英文:
Why I am not able to fetch go sdk for docker ?
问题
我正在尝试运行Docker Go SDK示例文件。我对Go语言还很陌生,不太清楚如何运行下面的Docker SDK API代码。但我已经尝试了一些方法,请帮我解决以下错误。
当我尝试运行go run example-ps.go
时,出现以下错误:
example-ps.go - 内容如下:
package main
import (
"io"
"os"
"github.com/docker/docker/client"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"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)
}
if _, err = cli.ContainerWait(ctx, resp.ID); err != nil {
panic(err)
}
out, err := cli.ContainerLogs(ctx, resp.ID, types.ContainerLogsOptions{ShowStdout: true})
if err != nil {
panic(err)
}
io.Copy(os.Stdout, out)
}
我遇到了以下错误。我该如何导入这些库文件?
example-ps.go:8:3: cannot find package "github.com/docker/docker/api/types" in any of:
/usr/local/go/src/github.com/docker/docker/api/types (from $GOROOT)
/Users/air/go/src/github.com/docker/docker/api/types (from $GOPATH)
example-ps.go:9:3: cannot find package "github.com/docker/docker/api/types/container" in any of:
/usr/local/go/src/github.com/docker/docker/api/types/container (from $GOROOT)
/Users/air/go/src/github.com/docker/docker/api/types/container (from $GOPATH)
example-ps.go:7:3: cannot find package "github.com/docker/docker/client" in any of:
/usr/local/go/src/github.com/docker/docker/client (from $GOROOT)
/Users/air/go/src/github.com/docker/docker/client (from $GOPATH)
example-ps.go:10:3: cannot find package "golang.org/x/net/context" in any of:
/usr/local/go/src/golang.org/x/net/context (from $GOROOT)
/Users/air/go/src/golang.org/x/net/context (from $GOPATH)
英文:
I am trying to run docker go SDK example file. I am quite new to Go language; I am not sure how to run below docker SDK API code. But I tried somehow; please help me with below error.
When I tried to run this go run example-ps.go
example-ps.go - content is below
package main
import (
"io"
"os"
"github.com/docker/docker/client"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"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)
}
if _, err = cli.ContainerWait(ctx, resp.ID); err != nil {
panic(err)
}
out, err := cli.ContainerLogs(ctx, resp.ID, types.ContainerLogsOptions{ShowStdout: true})
if err != nil {
panic(err)
}
io.Copy(os.Stdout, out)
}
I am getting below error. How do I import those library files?
example-ps.go:8:3: cannot find package "github.com/docker/docker/api/types" in any of:
/usr/local/go/src/github.com/docker/docker/api/types (from $GOROOT)
/Users/air/go/src/github.com/docker/docker/api/types (from $GOPATH)
example-ps.go:9:3: cannot find package "github.com/docker/docker/api/types/container" in any of:
/usr/local/go/src/github.com/docker/docker/api/types/container (from $GOROOT)
/Users/air/go/src/github.com/docker/docker/api/types/container (from $GOPATH)
example-ps.go:7:3: cannot find package "github.com/docker/docker/client" in any of:
/usr/local/go/src/github.com/docker/docker/client (from $GOROOT)
/Users/air/go/src/github.com/docker/docker/client (from $GOPATH)
example-ps.go:10:3: cannot find package "golang.org/x/net/context" in any of:
/usr/local/go/src/golang.org/x/net/context (from $GOROOT)
/Users/air/go/src/golang.org/x/net/context (from $GOPATH)
答案1
得分: 3
如果你已经正确安装了Golang,只需在你的Golang代码所在的目录中执行以下命令:
go get -v -t ./...
这将安装上游库...然后你可以编译你的代码...要获取详细信息,请执行以下命令:
go help packages
简而言之,./...
将安装当前目录中任何Go文件的import
中提到的所有包(以及递归安装其上游包等等)。
如果你曾经花费数天手动安装其他语言的上游库,你会非常欣赏这个命令的便利性...是的,我在说你,C、C++、Java,尤其是Python,它有着最复杂、最不连贯的库导入机制。
英文:
if you have golang installed correctly just issue this in the dir where your golang code lives
go get -v -t ./...
which will install the upstream libraries ... then you can compile your code ... for details issue
go help packages
the short of it is ./...
will install all packages [ and recursively its upstream packages, etc, etc.] mentioned in any go file's import
in your current dir
If you have ever spent days manually installing upstream libraries for any other language you will appreciate how much of a lifesaver this really is ... Yes I'm looking at you c, c++, java and especially python which has the roughest most disjoint library import machination incantation alchemy
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论