Tag:

如何输出除Go模板键或字段的第一个字符以外的所有字符?

提供了一个键或字段,是否可以使用Go文本/模板引擎在输出之前执行一些string操作。 这是为了在这个要点上改进模板,其目的是通过运行docker inspect来重新创build导致容器的docker run命令。 前导–name={{.Name}} \不能完全正常工作,因为它输出一个前导斜杠,需要删除一个斜杠来重新创build一个同名的容器。 由于这只能基于Docker中内置的模板工具,所以我不能使用外部函数或类似工具。

如何检索只在go-dockerclient中运行特定映像的容器?

我正在使用go-dockerclient库来检索容器的列表,我通过使用ListContainers函数获取所有容器 conts, err := client.ListContainers(docker.ListContainersOptions{All: true}) 但我想只得到正在运行特定映像的容器,我尝试运行 conts, err := client.ListContainers(docker.ListContainersOptionsFilters: map[string][]string{"Image": {"<imagename>:<version>"}}}) 但我得到错误无效的filter:'图像',这意味着没有过滤字段称为图像 那么有没有人有一个解决scheme,只获得运行特定图像的容器? 谢谢

使用Docker与Jenkins上的“vendor”目录构buildGo应用程序

我试图build立一个Jenkinspipe道来构build和部署我的第一个Go项目,使用Jenkinsfile和docker.image().inside 。 我无法弄清楚如何去获取vendor/目录中的依赖关系。 当我运行构build时,我得到了一堆错误: + goapptesting。/ … src / dao / demo_dao.go:8:2:无法在以下任何位置find软件包“github.com/dgrijalva/jwt-go”: /usr/lib/go_appengine/goroot/src/github.com/dgrijalva/jwt-go(from $ GOROOT) /usr/lib/go_appengine/gopath/src/github.com/dgrijalva/jwt-go(from $ GOPATH) /workspace/src/github.com/dgrijalva/jwt-go …为什么不拿起Vendor目录? 当我抛出一些日志logging时,似乎在运行sh "cd /workspace/src/bitbucket.org/nalbion/go-demo" ,下一个sh命令仍然在原来的${WORKSPACE}目录中。 我真的很喜欢jenkins文件的想法,但我找不到任何像样的文件。 (编辑 – 这里有不错的文档,但是dir("/workspace/src/bitbucket.org/nalbion/go-demo") {}在docker.image().inside) 我的Docker文件类似于: FROM golang:1.6.2 #Google的App Engine Go SDK 运行wget https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.40.zip -q -O go_appengine_sdk.zip && \ unzip -q go_appengine_sdk.zip -d / usr / lib / && \ rm […]

有没有什么方法可视化Docker中的代码stream(或使用Go语言)

我开始为docker工作者做贡献,但面临一些挑战。 它很难理解代码的stream程。 有什么方法可以知道代码的stream程吗? 假设我运行“docker运行”有什么方法或工具,我知道什么是所有的函数被调用。 如果docker工人不提供任何这样的工具,那么是否有任何类似的工具可以作为docker工人的语言。

使用golang docker引擎创build容器时出错

我在Go中创build一个项目,我使用“github.com/docker/docker/client”和“github.com/docker/docker/api/types”,但是当我尝试创build一个容器时,我得到以下错误: 错误:2016/10/03 22:39:26 containers.go:84:在连接时出错:发布https://%2Fvar%2Frun%2Fdocker.sock/v1.23/containers/create :http:服务器给了HTTP响应到HTTPS客户端 我不明白为什么会发生这种情况,它只发生在使用新的golang泊坞窗引擎后(旧的“github.com/docker/engine-api”现在已被弃用)。 代码没有任何复杂的东西,所以我想知道我是否缺less一些东西: resp, err := cli.Pcli.ContainerCreate(context.Background(), initConfig(), nil, nil, "") if err != nil { return err } 而被调用的initConfig执行以下操作: func initConfig() (config *container.Config) { mount := map[string]struct{}{"/root/host": {}} return &container.Config{Image: "leadis_image", Volumes: mount, Cmd: strslice.StrSlice{"/root/server.py"}, AttachStdout: true}} 这里也是我的dockerfile 从debian 维护者Leadis之旅 LABEL Description =“这个docker图像用于编译和执行用户的程序。” LABEL版本=“0.1” VOLUME / root / host / […]

如何退出Docker远程API执行stream?

当我从Docker Remote API获取stream如下所示: // Exec exec command func (d *Docker) ExecStart(host, id string) (net.Conn) { config := map[string]interface{}{ "Detach": false, "Tty": true, } buf, _ := json.Marshal(config) conn, _ := net.Dial("tcp", host) conn.Write([]byte("POST /exec/" + id + "/start HTTP/1.1\r\n")) conn.Write([]byte("Host:\r\n")) conn.Write([]byte("Connection: Upgrade\r\n")) conn.Write([]byte("Content-Type: application/json\r\n")) conn.Write([]byte("Upgrade: tcp\r\n")) conn.Write([]byte("Content-Length: " + fmt.Sprintf("%d", len(buf)) + "\r\n")) conn.Write([]byte("\r\n")) conn.Write(buf) […]

Golang:当作为makefile的一部分被调用的时候,构build失败

我有以下make文件: default: builddocker setup: go get github.com/golang/protobuf/proto go get github.com/golang/protobuf/protoc-gen-go go get golang.org/x/net/context go get google.golang.org/grpc buildgo: CGO_ENABLED=0 GOOS=linux go build -ldflags "-s" -a -installsuffix cgo -o main ./customer-server/ builddocker: docker build -t johnwesonga/grpc/customer-server -f ./Dockerfile.build . docker run -t johnwesonga/grpc/customer-server /bin/true docker cp `docker ps -q -n=1`:/main . chmod 755 ./main docker build –rm=true […]

在docker容器中的golang net.LookupHost返回127.0.53.53

我正在编写一个小应用程序,该应用程序应该在Docker容器中运行,并且应该通过其主机名与其​​他Docker容器交互。 我想获得服务器的IP地址使用net.LookupHost,但我总是得到127.0.53.53 奇怪的是,我可以使用dns工具来获取正确的IP地址,就像从同一个容器中挖掘一样。 它只能在go程序中不起作用。 以下是我的代码中获取IP地址的部分。 zk_server_ips, err := net.LookupHost("zookeeper") addrs, err := net.LookupIP("testserver") if err != nil { fmt.Fprintf(w, "Failed to lookup ip address for testserver") return } for _, addr := range addrs { if ipv4 := addr.To4(); ipv4 != nil { fmt.Fprintf(w, "IPv4: %s", ipv4) } 我已经阅读了很多,127.0.53.53是ICANN告诉我dsn setup有什么问题的方式,但是我不知道为什么它使用dig和drill而不是go代码。 ! 另外什么是正确的方式来设置docker容器parsing主机名? 这些容器在Alpine linux映像上运行。 下面是我在容器中的resolv.conf: […]

TLS自签名证书用于Docker的身份validationURL

我正在尝试login到您使用oadm工具构build的Dockerregistry。 我尝试使用令牌login: # docker login -u $(oc whoami) -e 'xxxx' -p $(oc whoami -t) 172.30.10.52:5000 Error response from daemon: no successful auth challenge for https://172.30.10.52:5000/v2/ – errors: [basic auth attempt to https://172.30.10.52:5000/v2/ realm "openshift" failed with status: 400 Bad Request] 查看日志,我可以看到问题是因为我的实例使用自签名证书: time="2017-01-10T00:58:42.913539516Z" level=error msg="error authorizing context: Get https://ld7-zko8s6q-ws:8443/oapi/v1/users/~: x509: certificate signed by unknown authority" go.version=go1.4.2 […]

docker堆栈使用客户端API部署

我正在玩docker的客户端API 。 我已经看到了如何运行容器,推,拉等。现在我想用一个组合文件来部署一个堆栈,但我不认为有一个one-func调用来做到这一点(不是在客户端API )。 我走了docker的代码,看到他们如何做到这一点 。 这是唯一的方法吗? 我试图将依赖关系保持在最低限度,但如果没有其他选项,我想我可以忍受它。 另外我对golang还是比较新的,所以如果有人能提供一个例子,我怎么才能实现docker stack deploy –compose-file file.yml虽然去代码将不胜感激。