登录
首页 >  Golang >  Go问答

无法使用 Go SDK 运行 Docker 容器网络主机模式,但可以通过 CLI 运行

来源:stackoverflow

时间:2024-03-06 22:27:26 239浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《无法使用 Go SDK 运行 Docker 容器网络主机模式,但可以通过 CLI 运行》,涉及到,有需要的可以收藏一下

问题内容

运行 docker 18.09.1、api 1.39,并尝试将容器的网络置于主机模式,以便蓝牙正常工作。当我从 cli 启动容器时,一切都运行良好:

docker run --rm --name mycontainer --net=host imagename my-command

当我尝试使用 go api 启动此容器时,网络似乎设置不正确,导致我的容器死机。

config := &container.Config{
    Cmd:      []string{"my-command"},
    Hostname: "mycontainer",
    Image:    imageName,
}

hostConfig := &container.HostConfig{
    AutoRemove: true,
    NetworkMode: "host",
}


container, err := cli.ContainerCreate(*ctx, config, hostConfig, nil, "mycontainer")

很明显我错过了某些东西,但我看不出那是什么。由于我指定了网络模式,我是否需要网络配置(containercreatenil 参数)?


解决方案


我在准备发布问题时发现了我的问题,因此我将分享它,因为任何文档中都没有明确说明这一点。使用 host 网络模式时,您的容器配置不应包含主机名。

改变这个:

config := &container.config{
    cmd:      []string{"my-command"},
    hostname: "mycontainer",
    image:    imagename,
}

...对此:

config := &container.Config{
    Cmd:      []string{"my-command"},
    Image:    imageName,
}

就这样了。

今天关于《无法使用 Go SDK 运行 Docker 容器网络主机模式,但可以通过 CLI 运行》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>