Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用docker的Go Sdk运行docker run?_Docker_Go - Fatal编程技术网

如何使用docker的Go Sdk运行docker run?

如何使用docker的Go Sdk运行docker run?,docker,go,Docker,Go,我想运行下面的docker命令 docker run ajaycs14/hello world-p 1527:80-d 如何实现以上使用 下面是运行图像的示例代码,它来自官方文档,如何修改下面的代码以获取端口和分离模式等选项。请帮助我修改下面的代码以用于上面的命令(docker run ajaycs14/hello world-p 1527:80-d) 在方法ContainerCreate中,第三个参数是您需要使用的。如果您对设置端口感兴趣,那么应该查看PortBindings字段。您还需要为容

我想运行下面的docker命令
docker run ajaycs14/hello world-p 1527:80-d

如何实现以上使用

下面是运行图像的示例代码,它来自官方文档,如何修改下面的代码以获取端口和分离模式等选项。请帮助我修改下面的代码以用于上面的命令(
docker run ajaycs14/hello world-p 1527:80-d


在方法
ContainerCreate
中,第三个参数是您需要使用的。如果您对设置端口感兴趣,那么应该查看
PortBindings
字段。您还需要为容器指定暴露的端口。您可以通过在(第二个参数)中提供
exposedport
来实现这一点。
我假设您的容器在默认情况下将以
守护进程
模式启动,因为您使用的是API而不是
cli
工具

以下是一个工作示例:

package main

import (
    "context"

    "github.com/docker/docker/api/types"
    "github.com/docker/docker/api/types/container"
    "github.com/docker/docker/client"
    "github.com/docker/go-connections/nat"
)

func main() {
    cli, err := client.NewEnvClient()
    if err != nil {
        panic(err)
    }

    ctx := context.Background()
    resp, err := cli.ContainerCreate(ctx, &container.Config{
        Image:        "mongo",
        ExposedPorts: nat.PortSet{"8080": struct{}{}},
    }, &container.HostConfig{
        PortBindings: map[nat.Port][]nat.PortBinding{nat.Port("8080"): {{HostIP: "127.0.0.1", HostPort: "8080"}}},
    }, nil, "mongo-go-cli")
    if err != nil {
        panic(err)
    }

    if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
        panic(err)
    }
}

在docker ps--all的输出中,我可以看到我的端口:
端口127.0.0.1:8080->8080/tcp,27017/tcp

是的,容器在守护程序模式下启动。如果您提供示例代码,则会很有帮助。
resp,err:=cli.ContainerCreate(ctx,&container.Config{Image:imageName,},&container.HostConfig{PortBindings:{9300:80},},nil,”),如果错误!=nil{panic(err)}
我正在尝试这个,但不起作用
package main

import (
    "context"

    "github.com/docker/docker/api/types"
    "github.com/docker/docker/api/types/container"
    "github.com/docker/docker/client"
    "github.com/docker/go-connections/nat"
)

func main() {
    cli, err := client.NewEnvClient()
    if err != nil {
        panic(err)
    }

    ctx := context.Background()
    resp, err := cli.ContainerCreate(ctx, &container.Config{
        Image:        "mongo",
        ExposedPorts: nat.PortSet{"8080": struct{}{}},
    }, &container.HostConfig{
        PortBindings: map[nat.Port][]nat.PortBinding{nat.Port("8080"): {{HostIP: "127.0.0.1", HostPort: "8080"}}},
    }, nil, "mongo-go-cli")
    if err != nil {
        panic(err)
    }

    if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
        panic(err)
    }
}