首页
学习
活动
专区
圈层
工具
发布

为docker api的golang sdk中的ContainerCreate函数设置PortBindings配置

,可以通过以下步骤完成:

  1. 导入所需的包:import ( "context" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/client" )
  2. 创建Docker客户端:cli, err := client.NewClientWithOpts(client.FromEnv) if err != nil { panic(err) }
  3. 定义容器创建的配置项:config := &container.Config{ Image: "your_image_name", ExposedPorts: nat.PortSet{ "80/tcp": struct{}{}, }, } hostConfig := &container.HostConfig{ PortBindings: nat.PortMap{ "80/tcp": []nat.PortBinding{ { HostIP: "0.0.0.0", HostPort: "8080", }, }, }, }在上述代码中,我们指定了容器使用的镜像名称,并且定义了要暴露的端口和绑定的主机端口。
  4. 调用ContainerCreate函数创建容器:resp, err := cli.ContainerCreate(context.Background(), config, hostConfig, nil, nil, "your_container_name") if err != nil { panic(err) }在上述代码中,我们传入了之前定义的容器配置项和主机配置项,以及容器的名称。
  5. 启动容器:if err := cli.ContainerStart(context.Background(), resp.ID, types.ContainerStartOptions{}); err != nil { panic(err) }在上述代码中,我们使用ContainerStart函数启动了创建的容器。

完成上述步骤后,你就成功地为docker api的golang sdk中的ContainerCreate函数设置了PortBindings配置。这样,你可以通过访问主机的8080端口来访问容器中的80端口。请注意,上述代码中的"your_image_name"、"your_container_name"和"8080"应根据实际情况进行替换。

推荐的腾讯云相关产品:腾讯云容器服务(Tencent Kubernetes Engine,TKE)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为 Docker 中的 Nginx 配置 HTTPS

本文将介绍如何为通过 docker 运行的 nginx 中的站点添加 https 支持,并自动完成证书的更新。...本文的演示环境为:运行在 Azure 上的 Ubuntu 16.04 主机(此图来自互联网): 准备环境 在 Azure 上创建 Ubuntu 类型的虚机事件非常容易的事情,安装 docker 也无须赘言...比较容易忽略的是配置合适的网络安全组规则,比如打开 80 和 443 端口: 还有就是配置 DNS: 创建一个普通的 http 站点 简单起见,直接使用一个镜像中的 nodejs 应用作为 web...为站点配置 SSL/TLS 证书 有了 SSL/TLS 证书,接下来更新 nginx 的配置文件就可以了,更新 nginx/conf.d/default.conf 的内容如下: upstream web...其实我们的配置已经为自动化更新证书提供了最大的便利(其实是使用 docker 带来的便利),在定时任务中添加下面两条记录就可以了: 0 0 1 * * /home/nick/certbot/renew_cert.sh

1.8K20
  • Go每日一库之121:moby(操作docker容器)

    在日常开发中,测试是不可避免的,在针对DAO层的代码写测试用例的时候,直接将依赖的存储服务(比如mongodb)的client给mock掉,可能达不到检验代码中语法或数据操作正确性的目的。...// NewEnvClient 直接使用环境变量中的 DOCKER_HOST, DOCKER_TLS_VERIFY, DOCKER_CERT_PATH, DOCKER_API_VERSION 配置 cl...客户端 这里我们不再使用环境变量默认的配置,而是通过配置参数的方式初始化 Docker 客户端,同时指定连接的 HTTP 客户端和上下文等信息。...(cl.ImageList(context.Background(), types.ImageListOptions{})) } 应用: 测试环节中mock数据库 启动mongodb容器函数封装: package...t.Log(mongoURI) // 连接db,进行数据操作 } 总结 Docker SDK 封装了 Docker 客户端会用到的指令,Go client for the Docker Engine

    1.2K51

    使用docker in docker

    工作中需要在容器里操作docker镜像,而且又不想污染宿主机上的docker镜像,找到了docker in docker(dind)的方案,这里记录一下。...自己架设的docker registry服务使用的是自签名证书,因此参考官方文档,还设置了自签名证书对应的ca证书/etc/docker/certs.d/myregistrydomain.com/ca.crt...命令的容器,这里注意两点: 同样因为使用了私有的registry服务,而且证书是自签名的,dockerd容器要作一些配置 因为两个container共享相同的网络空间,因此直接设置好DOCKER_HOST...用golang语言操作dockerd 运维时用docker命令来操作dockerd还是比较好的,但有时希望以编程的方式操作dockerd,这时docker的sdk就派上用场了,可以参考官方文档和示例。...docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker

    4.8K20

    为Docker容器中的服务配置固定容器IP教程

    如果不固定ip,每次主机重启后,,docker会动态给容器分配ip,导致redis容器的IP自动换了 ,然后还得去改傻妞配置就很烦,有些时候还会造成其他影响。...ls打印docker network inspect redisnet1删除docker network rm redisnet1–subnet:指定网段的 CIDR 格式的子网其中172.172.0.0.../16表示子网范围为16位查看更多关于network的操作docker network --help2)运行容器安装软件,配置网络信息docker run 参考官方文档:https://docs.docker.com...myredis1 --ip 172.172.0.2 -p 6379:6379 redis说明:加入docker内部网络: --network redisnet1配置容器在内部局域网的网络别名:--network-alias...redisnet1配置在内部局域网的ip地址:--ip 172.172.0.2,注意点:设置的ip必须在内部网络的网络范围中,不然会报错,不能正常启动根据规定:忽略子网内全为0和全为1的地址,剩下的就是有效地址第二位

    3.1K50

    docker v1.11 源码重构分析

    在v1.12版本中,在dockerd的启动参数或者配置文件中,开启live-store 参数即可,具体参考 官方live-store升级dockerd文档。...###dockerd启动流程 在cmd/dockerd/docker.go的main函数中,进行一些参数的初始化工作后,会调用到cmd/dockerd/daemon.go中的start()函数: if...命令行执行分析 docker client端docker的入口函数在cmd/docker/docker.go当中,在main函数中,会对命令行参数进行处理,以docker create为例,最终会调用到...然后通过以下源码调用到vendor/src/github.com/docker/engine-api/client/container_create.go中的ContainerCreate函数。..., name) 在ContainerCreate函数中,会向api server端发起post请求: serverResp, err := cli.post(ctx, "/containers/create

    1.6K80

    Docker基本介绍

    Docker采用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器,Docker容器通过Docker镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类架构介绍总体架构Docker...)创建一个mux.Router,提供请求的路由功能,在Golang中gorilla/mux是一个强大的URL路由器以及调度分发器,该mux.Router中添加了众多的路由项,每一个路由项由HTTP请求方法...的Handler对象中有一项为{"create": daemon.ContainerCreate,},则说明当名为"create"的Job在运行时,执行daemon.ContainerCreate的handlerC...GraphDriver架构如下:NetworkDriver的用途是完成Docker容器网络环境的配置,其中包括Docker启动时为Docker环境创建网桥,Docker容器创建时为其创建专属虚拟网卡设备...、以及为Docker容器分配IP、端口并与宿主机做端口映射、设置容器防火墙策略等NetworkDriver架构如下:ExecDriver作为Docker容器的执行驱动,负责创建容器运行命名空间,负责容器资源使用的统计与限制

    37310

    【K8s】kubelet 源码分析 01-03

    api.ContainerManifest, handler SyncHandler) {}etcdChannelfileChannelserverChannelhttpChannel这个函数启动循环...,监控各个通道中的内容,每次只同步一个通道中的内容;这里着重分析 SyncManifests() 方法实现:func (sl *Kubelet) SyncManifests(config []api.ContainerManifest...current state同步配置容器列表,比较期望状态和主机上的容器状态;-- 如果对应的节点上存在,则不进行处理-- 如果对应的节点上不存在,则需要在对应的节点上启动容器;---1)判断对应节点上的是否存在容器..., container *api.Container) (name string, err error) {}-- 拉取镜像sl.pullImage(container.Image)这个函数中,是直接执行...{PortBindings: portBindings,Binds: binds,})这里是使用了 docker-client 的方式操作 Docker 的接口;至此,kubelet 就完整的启动了容器

    41230

    Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务:第二篇(内附开发 demo)

    系列 云原生 API 网关,gRPC-Gateway V2 初探 Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务:第一篇 鉴权微服务数据持久化 使用 Docker...# Status: Image is up to date for mongo:4.4.5 # docker.io/library/mongo:4.4.5 启动 docker run -p 27017...OK,我们看到成功映射了容器端口(27017/tcp)到了本机的 :27017。 MongoDB for VS Code 因为为少的开发环境是 VS Code,所以安装一下它(开发时,用它足够了)。...用户 OpenID 查询/插入业务逻辑(MongoDB 指令分析) 一句话描述: 在 account 集合中查找用户 open_id 是否存在,存在就直接返回当前记录,不存在就插入并返回当前插入的记录...满足查询条件的记录存在时,不执行 setOnInsert 中的操作。满足条件的记录不存在时,执行 setOnInsert 操作。

    1.3K20

    关于docker容器启动后修改或添加端口

    docker容器启动后怎么修改端口映射?在docker run创建并运行容器的时候,可以通过-p指定端口映射规则。但是,也会遇到刚开始忘记设置端口映射或者设置错了需要修改的情况。...当docker start运行容器后,并没有提供一个-p选项或设置,让你修改指定端口映射规则。 通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。...方法二:利用docker commit新构镜像 docker commit:把一个容器的文件改动和配置信息commit到一个新的镜像。...文件中的端口(如果config.v2.json里面也记录了端口,也要修改) 注:以下是我个人操作 363ff2d977f8是CONTAINER ID 此次操作想让宿主机8080端口映射容器内的80端口...配置文件路径/var/lib/docker/containers/363ff2d* 先修改hostconfig.json; 如果之前没有端口映射, 应该有这样的一段: “PortBindings”

    30.2K61

    终于有人把 Docker 讲清楚了,万字详解!

    client 发送的请求,架构图如下: 在 Docker 的启动过程中,通过包 gorilla/mux(golang 的类库解析),创建了一个 mux.Router,提供请求的路由功能。...在 Golang 中,gorilla/mux 是一个强大的 URL 路由器以及调度分发器。...举例说明,Engine 的 handler 对象中有一项为:{“create”: daemon.ContainerCreate},则说明当名为 create 的 job 在运行时,执行的是 daemon.ContainerCreate...graphdriver 的架构如下: networkdriver 的用途是完成 Docker 容器网络环境的配置,其中包括 Docker 启动时为 Docker 环境创建网桥;Docker 容器创建时为其创建专属虚拟网卡设备...;以及为 Docker 容器分配 IP、端口并与宿主机做端口映射,设置容器防火墙策略等。

    1.1K10

    Docker - 修改容器端口映射的方法

    Docker 建立好容器后,配置并不容易修改,本文记录修改建立好的容器的端口映射的方法。...好处是包治百病,正规途径 缺点就是过程繁琐,不够优雅 方法二 端口映射等容器信息都是存在某个地方,通过配置文件管理的,我们仅需修改配置文件的端口信息即可完成改写 以我当前的 nginx...容器为例 查看需要修改的容器信息 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES...ID 容器相关的配置都在其 ID 对应的子目录里 cd /var/lib/docker/containers/5190850b4fc......hostconfig.json 和 config.v2.json 两个文件 修改 hostconfig.json 在查看内容时,可以发现 json 中 PortBindings 键值对应的内容即是端口映射

    3.1K10

    万字详解Docker架构原理、功能及使用

    在Docker的启动过程中,通过包gorilla/mux(golang的类库解析),创建了一个mux.Router,提供请求的路由功能。...在Golang中,gorilla/mux是一个强大的URL路由器以及调度分发器。...原则上,Docker Server的运行是众多job中的一个,但是为了强调Docker Server的重要性以及为后续job服务的重要特性,将该”serveapi”的job单独抽离出来分析,理解为Docker...举例说明,Engine的handler对象中有一项为:{“create”: daemon.ContainerCreate,},则说明当名为”create”的job在运行时,执行的是daemon.ContainerCreate...networkdriver的用途是完成Docker容器网络环境的配置,其中包括Docker启动时为Docker环境创建网桥;Docker容器创建时为其创建专属虚拟网卡设备;以及为Docker容器分配IP

    2.8K10
    领券