Tag:

Docker用Go绑定端口

当我使用Docker Go API创build容器时,我会拉取图像,然后我需要创build容器然后启动它。 我在这里纠正它是如何完成的? // Ports for VNC vncPorts := make(nat.PortMap) vncPorts["35901"] = []nat.PortBinding{{HostIP: app.ip, HostPort: "5901"}} vncPorts["36901"] = []nat.PortBinding{{HostIP: app.ip, HostPort: "6901"}} hostConfig := container.HostConfig{} hostConfig.PortBindings = vncPorts containerConfig := container.Config{} containerConfig.Image = app.Name

Docker Dev:Golang:Layer.Size()相当于 layer.Metadata中Metadata.Size的总和。

layer.Layer和layer.Metadata定义的属性的定义之间有什么主要区别? 通过阅读源头上的godoc评论我完全清楚。 我试图了解docker源代码中定义的接口。 type LayerGetReleaser interface { … Release(layer.Layer) ([]layer.Metadata, error) } 看看layer.Layer和layer.Metadata的定义和文档。 layer.Layer layer.Metadata我倾向于相信它们是相关的。 此外,追踪Release(layer.Layer) ([]layer.Metadata, error)我得到这样的感觉: Release在图像的图层上循环; 删除每个图层并将图层的大小(&其他属性)作为元数据附加。 它包含一个指向这个元数据值的指针,并在操作期间传递它。 我想实现一个类似的function,但实际上并没有删除任何图像的图层。 我的意思是,我想补充一点 type LayerGetReleaser interface { … Release(layer.Layer) ([]layer.Metadata, error) DryRelease(layer.Layer) ([]layer.Metadata, error) } 并执行DryRelease为: func (is *store) DryRelease(layer layer.Layer) ([]layer.Metadata, error) { met := []layer.Metadata{} return dryRelease(layer, &met) } func dryRelease(layer layer.Layer, met […]

Go + MySql:迁移到GKE(Google云容器引擎)有多简单?

我的项目目前由独立的云提供商托pipe。 我正在使用2个虚拟机,Linux: 一个托pipe一个Go应用程序 一个托pipe一个MySql数据库 我现在想转移到Google云端平台。 您认为转移到Google Cointainer引擎(GKE),而不是Google Compute Engine(它将使用与当前提供者相同的虚拟机模型(IaaS))是否合理? 我从来没有使用过Kubernetes和Docker。 迁移有多容易? 我会无用地使我的生活复杂化吗? 我的简单模型的configuration有多困难?

开发和debugging的最佳工作stream程 – 最初部署在docker环境中

编程进入Docker容器还是不行? 一段时间以来,我一直在寻找一种编程,debugging和最终部署到Docker环境的好方法。 我已经看过VS Code,通过Delvedebugging成一个容器。 debugging器很难连接。 使用Eclipse Che,在IDE中不受支持。 由于Docker是用Go编写的 – Docker中的好人 – 他们必须有一个好的工作stream程? 可能的结果是,我不应该在容器内开发和debugging,而是从主机上进行开发和debugging – 然后只有在编译到容器时才能部署。 你有什么经验?

docker golang API ContainerList失败并显示TLS

我已经在CoreOS上configuration了使用TLSvalidation的dockerd; Cli“泊坞窗图像”返回我有效的图像列表:存储标记图像ID创build大小busybox latest c75bebcdd211 3周前1.106 MB但在“去”代码尝试它:导出DOCKER_CERT_PATH =〜/ .docker图像,错误:= cli.ImageList (context.Background(),types.ImageListOptions {})返回空列表 下面是我的dockerconfiguration:客户端:版本:1.12.6 API版本:1.24 Go版本:go1.6.3 Git commit:d5236f0内置:星期二5月30日23:15:08 OS / Arch:linux / amd64 服务器:版本:1.12.6 API版本:1.24 Go版本:go1.6.3 Git commit:d5236f0内置:星期二5月30日23:15:08 OS / Arch:linux / amd64

ListenAndServe返回net.DNSError“节点名称或服务名称提供”

我试图写一个去http服务器,但我有一个问题,当我尝试聆听传入的连接。 硬件设置:MacOS Sierra 10.12.4,docker 17.03 我有一个XML文件,将打开一个。 phpmyadmin和sql: mysql: extends: service: mysql-5.7 ports: – "3306:3306" phpmyadmin: image: phpmyadmin/phpmyadmin:latest links: – "mysql:db" ports: – "8080:80" 这似乎工作正常。 在此之后,我写了一个go文件来连接和监听连接: stack := negroni.New() stack.Use(cors.New(cors.Options{ AllowedOrigins: []string{"*"}, AllowedMethods: []string{"GET", "POST", "PUT", "DELETE"}, AllowedHeaders: []string{"*"}, AllowCredentials: true, })) external := &http.Server{ Addr: "10001", Handler: stack, } // Start the server, listening for […]

Docker中连续的空控制台input

我正在尝试在Docker中运行Go控制台程序。 一切工作正常,除了我采取控制台input的部分。 不工作的部分是这样的: func ListenTerminalInput() { reader := bufio.NewReader(os.Stdin) in := "" for in != "exit" { in, _ = reader.ReadString('\n') in = strings.Replace(in, "\n", "", -1) in = strings.ToLower(in) switch in { case "exit": continue case "status": PrintStatus() continue case "servers": PrintServers() continue case "clients": PrintClients() continue case "help": PrintHelp() continue default: fmt.Println("Please make […]

在Docker中获取Go的所有相关软件包

我可以得到所有我的依赖包,当我做以下事情: $ cd myrepo $ go get -d ./… 但在docker中做这件事的最好方法是什么? 我不希望所有的回购在我的docker应用程序,所以我正在寻找一种方法来执行这个docker容器内的一些卷(或类似的东西),并重用它。 我正在考虑类似的东西。 Dockerfile FROM golang:1.8 WORKDIR /app ADD ./src build立图像 $ docker build -t myapp . $ docker run myapp go get -d ./… 我怎样才能重用依赖项,而不是每次都拉/下载它们? 我希望他们在某种程度上。 我知道docker卷有点,但我不知道如何在这种情况下使用它。

无法在Raspberry Pi上运行elasticsearch图像

试图在我的覆盆子pi上运行elasticsearch图像时出现错误。 它在我的Mac上运行良好,所以它可能是特定于操作系统。 我可以运行其他图像。 pi@raspberrypi:~/folder/folder$ docker run node:latest pi@raspberrypi:~/folder/folder$ docker run docker.elastic.co/elasticsearch/elasticsearch:5.6.3 standard_init_linux.go:195: exec user process caused "exec format error" 在广泛search了standard_init_linux.go:195除了可能与qemu libray有关外,还从本次讨论中得到了很less的结果,但对于linux操作系统的了解还不够深入。 pi@raspberrypi:~/folder/folder$ docker version Client: Version: 17.10.0-ce API version: 1.33 Go version: go1.8.3 Git commit: f4ffd25 Built: Tue Oct 17 19:13:44 2017 OS/Arch: linux/arm Server: Version: 17.10.0-ce API version: 1.33 (minimum version 1.12) Go version: […]

无法在golang中构builddocker镜像

我在一个容器内执行这个testing用例,因为golang:1.7在我的主机上不可用。 我创build了一个容器,并在bash模式下启动它,并遵循链接中提到的步骤https://tdeheurles.github.io/acting-on-docker-from-inside-docker/ 这就是我面临的问题,当我试图build立一个docker图像时,总是显示下面的错误 来自守护进程的错误响应:找不到指定的Dockerfile:Dockerfile 这是我的Dockerfile内容 FROM golang:1.9 我创build了这个Dockerfile只是为了testing,以确保我能够用golang程序创build图像。 这是我的逻辑逻辑 dockerFile := "Dockerfile" imageName := "test_build_image" ctx := context.Background() cli, err := client.NewEnvClient() buildOptions := types.ImageBuildOptions{ Tags: []string{imageName}, Dockerfile: dockerFile } buildResponse, err := cli.ImageBuild(ctx,dockerBuildContext, buildOptions) 编辑:1 奇怪的是这段代码正在工作 cli, _ := client.NewEnvClient() dockerBuildContext, err := os.Open("anil_test.tar") defer dockerBuildContext.Close() buildOptions := types.ImageBuildOptions{Tags: []string{"my_image"}, Dockerfile: "Dockerfile"} buildResponse, err […]