Tag:

如何确定docker exec中的cmds何时完成

我正在使用Docker Rest API在容器上运行一个exec命令来开始构build一个maven项目。 我想知道是否有任何方式提供的Docker来确定什么时候你附加到执行cmd cmd完成,或者如果我需要开始获得创造性

无法下载docker golang映像:没有指定命令

docker工在这里的新手。 我想使用go语言来构build一个项目,我docker-compose.yml文件包含以下内容: go: image: golang:1.7-alpine volumes: – ./:/server/http ports: – "80:8080" links: – postgres – mongodb – redis environment: DEBUG: 'true' PORT: '8080' 当我在terminal中运行docker-compose up -d时,它返回以下错误: `ERROR: for go Cannot create container for service go: No command specified` 我应该如何解决它?

无法连接到在本地Docker容器中运行的Go GRPC服务器

我有一个去grpc服务。 我正在开发一个mac,塞拉利昂。 在本地对服务运行grpc客户端时,一切正常,但是在Docker容器中对同一服务运行相同的客户端时,出现此错误: transport: http2Client.notifyError got notified that the client transport was broken EOF. FATA[0000] rpc error: code = Internal desc = transport is closing 这是我的docker文件: FROM golang:1.7.5 RUN mkdir -p /go/src/github.com/foo/bar WORKDIR /go/src/github.com/foo/bar COPY . /go/src/github.com/foo/bar # ONBUILD RUN go-wrapper download RUN go install ENTRYPOINT /go/bin/bar EXPOSE 51672 我的命令来build立图像: docker build -t bar . […]

使用gRPC在容器之间进行通信

我正在实现运行在两个不同容器上的两个服务(服务器和客户端),并尝试使用gRPC在它们之间进行通信。 如果我将服务器部署为一个容器,而不是运行在一个容器上的客户端,一切正常。 但是,如果我将客户端部署在不同的容器上,则会收到Error #01: could not retrieve restaurant's list: rpc error: code = Unavailable desc = grpc: the connection is unavailable错误。 我错过了什么步骤沟通两个不同的容器使用gRPC? PS:我现在想尝试没有Kubernetes。 服务器 func Serve() { log.Println("serving…") port := ":50051" lis, err := net.Listen("tcp", port) if err != nil { log.Fatalf("failed to listen on port %s: %v", port, err) } s := grpc.NewServer() server […]

Docker应用程序容器不会与我的MySQL容器通信

我使用docker工具来组装两个容器,以帮助我更好地熟悉docker工,而我似乎无法弄清楚为什么我的两个容器不能相互通信。 我的应用程序的dockerfile是: FROM golang ADD . /go/src WORKDIR /go/src RUN go get github.com/go-sql-driver/mysql RUN go get github.com/gorilla/mux RUN go build -o bin/main main.go app.go model.go ENTRYPOINT /go/src/bin/main EXPOSE 8080 和我的docker-compose.yml是 version: '3' services: db: image: mysql:5.7 volumes: – db_data:/var/lib/mysql restart: always ports: – "3306:3306" expose: – "3306" environment: MYSQL_ROOT_PASSWORD: testrootpassword MYSQL_DATABASE: testing MYSQL_USER: testuser MYSQL_PASSWORD: […]

selectGolang泊坞窗基础图像

图像golang和alpine大小差异大约300Mb 。 使用golang图像而不是普通的alpine什么好处?

docker在内部是否使用像chroot,unshare,nsenter等的系统调用或lxc的包装

我正在阅读一篇文章 ,从头开始构build容器,而不使用docker,只是使用诸如chroot,unshare,nsenter等linux系统调用。 Docker内部是否包含这些系统调用的封装,看起来像docker exec并没有像这个答案那样使用nsenter 如果docker正在使用golang二进制的这些调用来使用这些系统调用。 或者docker是lxc的一个包装,但是对于我来说并不是这样的答案 任何人都可以指出Docker目前用来构build容器的确切的低层次的东西(系统调用/ lxc等)。

如何在docker基础上运行我的Go webapp作为用户nobody?

我不想以root身份在docker容器中运行任何东西。 我想要简约的图像。 我可以在没有任何问题的情况下运行经过编译的Go应用程序。 但是,当我不希望它以root身份运行(我假设它以root身份运行)并在dockerfile中定义USER nobody时, 014/10/25 06:07:10 Error response from daemon: Cannot start container 4822f34e54e20bb580f8cd1d38d7be3c828f28595c2bebad6d827a17b4c2fe21: finalize namespace setup user get supplementary groups Unable to find user nobody 这是我的dockerfile FROM scratch ADD lichtpunkt_go_linux_amd64 /lichtpunkt_go_linux_amd64 ADD web /web USER nobody CMD ["./lichtpunkt_go_linux_amd64"] EXPOSE 3001 编辑———— 事实certificate,划痕是空的,非常空虚。 运行useradd会执行/ bin / sh -c useradd,但没有/ bin / sh。 RUN [“useradd”]将直接执行。 […]

docker工人 – 无法从外部访问docker端口

所以我创build了一个新的EC2实例并在其上安装了docker。 我从( https://github.com/commonsearch/cosr-front/blob/master/INSTALL.md )部署了代码,并遵循了安装说明。 安装是成功的,我启动了服务器: [ec2-user@ip-172-30-0-127 cosr-front]$ make docker_devserver docker run -e DOCKER_HOST –rm -v "/home/ec2-user/cosr-front:/go/src/github.com/commonsearch/cosr-front:rw" -w /go/src/github.com/commonsearch/cosr-front -p 9700:9700 -i -t commonsearch/local-front make devserver mkdir -p build go build -o build/cosr-front.bin ./server GODEBUG=gctrace=1 COSR_DEBUG=1 ./build/cosr-front.bin 2016/05/28 16:32:38 Using Docker host IP: 172.17.0.1 2016/05/28 16:32:38 Server listening on 127.0.0.1:9700 – You should open http://127.0.0.1:9700 in […]

用于testing使用Docker客户端API的方法的接口错误types错误

我正在重构我写的程序,所以我可以正确地编写testing。 我想testing的第一种方法之一是使用Docker的客户端API来查看Docker主机上是否存在某个图像。 为了能够testing这个方法,我创build了一个匹配client.ImageList的签名的接口: type ImageLister interface { ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error) } 我还更改了testing方法以将ImageLister作为参数,所以我可以传入特定于我的testing的ImageLister实现。 然而,在我的实际代码中,我将“真正的”Docker客户端传递给要testing的方法,发生以下编译错误: ImageExists:* client.Client没有实现ImageLister(ImageList方法的错误types)有ImageList(“github.com/docker/docker/vendor/golang.org/x/net/context”.Context,types.ImageListOptions)([ ] types.ImageSummary,错误)想要ImageList(“上下文”.Context,types.ImageListOptions)([] types.ImageSummary,错误) 我该如何解决这个问题? 或者我的方法不好,我应该走不同的路线吗? 编辑:下面的程序重现我遇到的问题。 package main import ( "context" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) type ImageLister interface { ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error) } func main() { client, err := client.NewEnvClient() defer client.Close() ImageExists(context.TODO(), client, "foo") […]