Tag:

用于Go的Docker Remote API v1.24库

嗨有任何库,我可以使用例如使用Docker远程API v1.24现有的types,例如我有这个函数返回一个服务types func GetServices() docker.Services { res, _ := client.Get("https:10.0.1.10:2376/services") // client previously created js, _ := ioutil.ReadAll(res.Body) var Services docker.Services _ = json.Unmarshal(js, &Services) return Services } 在这里我假设存在一个包含这些types的库泊坞窗,这是我需要的任何一个帮助? 以前我用过dockerclient

ImageMagick Go API HTTP挂在ReadImageBlob上

我写了一个Beego HTTP服务器,当用户点击一个端点时: 服务器请求来自另一台服务器的图像(例如imgur) 它读取图像的字节并将它们传递给gographics / imagick 这(应该)调整图像大小,并返回结果的字节数组 实际上发生的事情是我的HTTP服务器完全挂起,我甚至没有去处理错误,并且在服务器的所有端点上都得到一个502坏的网关。 我的代码如下所示: func processContactImage(idx int, image []byte) ([]byte, error) { imagick.Initialize() defer imagick.Terminate() log.Println("idx: ", idx) mw := imagick.NewMagickWand() log.Println("reading image blob: ", image) err := mw.ReadImageBlob(image) if err != nil { log.Println("reading blob failed: ", err) return []byte{}, err } //… } 我可以在terminal上看到日志消息“reading image blob:[bytes,bytes bytes]”,并且我已经将打印的字节复制到另一个小程序中,以testing字节确实是否拥有图像。 它完全挂在err […]

通过http为api网关链接的docker容器之间的通信

我目前正在研究一个golang web应用程序,这个应用程序目前是一个由许多软件包组成的应用程序,并部署在一个单独的docker容器中。 我有一个redis实例和一个mysql实例部署和链接作为单独的容器。 为了得到他们的地址,我把他们从docker设置的环境variables。 我想实现一个api网关模式,其中我有一个服务,暴露的HTTP端口(80为HTTP或443为https)称为'API'代理请求其他服务。 其他服务理想情况下不公开任何端口,而是直接与其所依赖的服务相关联。 所以,除了mysql和redis之外,api将与所有服务相连接。 任何需要validation用户会话信息的服务都将与用户服务等相关联。我的问题是,如何让我的http服务器在我的容器之间的端口链接上监听端口上的http请求。

Docker-Compose:与需要相对导入的Dockerfiles组合

首先,这是我的项目层次结构: myproj/ – commons1/ – com1_file1.go – … – commons2/ – com2_file1.go – … – module1/ – mod1_file1.go – Dockerfile – … – module2/ – mod2_file1.go – Dockerfile – … – docker-compose.yml 我想要做的是,当module1和module2容器启动时,它们每个都有一个commonsN中所有commonsN目录的副本,这样每个目录都可以访问每个commonsN目录公开的公共库。 例如,我想在module1的容器中看到类似下面的内容: /go/ – src/ – commons1/ – com1_file1.go – … – commons2/ – com2_file1.go – … – module1/ – mod1_file1.go – … […]

有没有办法得到bazel沙盒目录时不支持沙盒?

我在一个docker集装箱里面运行着bazel。 在本地,当我运行没有标志bazel时,我得到以下警告: 警告:您的系统不支持沙箱执行,因此无法保证操作的密封性。 有关更多信息,请参阅http://bazel.build/docs/bazel-user-manual.html#sandboxing 。 您可以通过–ignore_unsupported_sandboxingclosures此警告。 虽然我失去了一些关于气密性的保证,但是在运行我的任何一个genrules之前,Bazel仍然创build了所有的沙箱目录。 然而,在CI中,我没有看到这个警告,而是在尝试沙箱时遇到失败。 所以我通过了–genrule_strategy=standalone来停止崩溃,但是现在我的genrules正在工作区中执行,我绝对不想这样做。 有没有办法让我得到我在本地看到的行为,显式沙盒调用被禁用,因为他们会失败,但正确复制srcs / deps /数据正确的tmp目录创build仍然发生? 要么我可以通过一个标志触发这种行为,或者我可以做的事情,我的系统说服bazel沙盒不支持呢?

如何通过Go SDKstream式处理Docker容器日志

我正在为Go中的一些游戏服务器软件编写一个名为sampctl的工具,主要function是为服务器实例启动一个Docker容器,然后捕获从容器中出来的日志,将其清理一些并发送给用户select的位置,例如Elasticsearch或pipe理面板,供以后分析。 我有一切工作,唯一我似乎无法工作的是stream日志。 如果容器中的应用程序崩溃,我可以获取日志,但是我想实时传输日志。 我试过使用一个扫描仪与ContainerLogs返回ReadCloser但只是挂在terminal。 https://github.com/Southclaws/sampctl/blob/9c76b4dd1b3dbb9e18927da10028d5beeb94f728/run_container.go#L64-L67 ContainerLogs是否支持stream式传输? 或者我需要找出另一个解决scheme… 道歉,如果这是更多的问题比Docker的问题,我不太确定是否在这里或在GoLangBridge张贴…

Docker与golang-onbuild构成无法在代理之后下载

在没有代理的机器上,我写了main.go,Dockerfile和docker-compose.yml,像docker-compose.yml这样成功完成。 package main import ( "fmt" "github.com/garyburd/redigo/redis" "log" "net/http" ) func main() { redi, err := redis.Dial("tcp", "redis:6379") /// SNIP /// log.Fatal(http.ListenAndServe(":5000", nil)) } Dockerfile # Dockerfile FROM golang:onbuild EXPOSE 5000 泊坞窗,compose.yml # docker-compose.yml version: '2' services: web: build: . ports: – 5000:5000 depends_on: – redis redis: image: redis 但是,(当然)它们不在代理之后的机器上运行。 我修改了Dockerfile和docker-compose.yml, Dockerfile # Dockerfile FROM […]

Golang失败,改变导入模块的名称

我试图把SkyDNSv1带回到生活中,并从我的fork(这里是Dockerfile )中构build它。 SkyDNS对于快速服务发现来说是非常好的,简单的工具,但是它并没有被更新很久。 在构build过程中有一个错误,它是由第三方库引起的。 我无法弄清楚为什么会发生这种情况: $ docker build –no-cache -t skydns1 . Sending build context to Docker daemon 1.566 MB Sending build context to Docker daemon Step 0 : FROM golang:1.4.2 —> 3e8cb8e0c765 Step 1 : WORKDIR /go/src —> Running in 3a06cf460ad9 —> 1dd14a099164 Removing intermediate container 3a06cf460ad9 Step 2 : RUN go get github.com/codegangsta/cli […]

运行Go程序而不使用Go环境

我在Go中编写了一个程序,我想在Docker容器中启动它,但是我的公司没有golang Docker镜像,拒绝下载它。 我只有Java(CentOS)的图像。 我怎样才能做到这一点? 是否有可能运行某种不需要Go环境的二进制文件? 提前致谢。

如何在docker remote api中创build容器? (去-dockerclient)

我正在使用go-dockerclient库,我想使用CreateContainer go-dockerclient方法创build容器,但是我应该在哪里传递泊坞窗图像ID我创build此function func CreateContainer(w http.ResponseWriter, r *http.Request){ client,err:=docker.NewTLSClient(Endpoint,Cert,Key,Ca) if err!=nil{ panic(err) } container,er:=client.CreateContainer(docker.CreateContainerOptions{Name:"cont"}) if er!=nil{ panic(err) } } 例如,如果我有一个给定的图像ID我应该在哪里添加它?