go docker sdk 使用 第二章

go docker sdk 使用 第二章

本文以zookeeper镜像做示范

容器端口映射

package main

import (
	"context"
	"log"
	"os"
	"os/signal"
	"syscall"

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

func main() {
	cli, err := client.NewClientWithOpts(client.WithVersion("1.41"))
	if err != nil {
		log.Fatalln(err)
	}
	portinfo, _ := nat.NewPort("tcp", "2181")//指明协议端口,也可以不用他给的函数,直接写 "2181/tcp" 端口号/协议
	resp, err := cli.ContainerCreate(context.Background(), &container.Config{
		Image: "zookeeper",
	}, &container.HostConfig{
		PortBindings: nat.PortMap{portinfo: []nat.PortBinding{nat.PortBinding{HostPort: "2182"}}},//映射到宿主机0.0.0.0:2182 区别于2181,这里方便演示时区别容器端口和映射端口
	}, &network.NetworkingConfig{}, nil, "zookeeper2")
	if err != nil {
		log.Fatalln(err)
	}
	err = cli.ContainerStart(context.Background(), resp.ID, container.StartOptions{})
	if err != nil {
		log.Fatalln(err)
	}
	ch := make(chan os.Signal, 1)
	signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
	<-ch
	err2 := cli.ContainerStop(context.Background(), resp.ID, container.StopOptions{})
	if err2 != nil {
		log.Fatalln("stop error", err2)
	}
	cli.Close()

}

演示效果

请添加图片描述

相关推荐

  1. 第二 使用 SQL Search

    2024-03-11 07:32:03       57 阅读
  2. 第二十六 :Docker 内部 DNS 服务如何使用

    2024-03-11 07:32:03       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 07:32:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 07:32:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 07:32:03       82 阅读
  4. Python语言-面向对象

    2024-03-11 07:32:03       91 阅读

热门阅读

  1. API 管理调研

    2024-03-11 07:32:03       37 阅读
  2. pytorch单机多卡训练 logger日志记录和wandb可视化

    2024-03-11 07:32:03       41 阅读
  3. Apache 的安装与目录结构

    2024-03-11 07:32:03       48 阅读
  4. 【Docker】apache 容器化部署

    2024-03-11 07:32:03       50 阅读
  5. Apache Hive(三)

    2024-03-11 07:32:03       42 阅读
  6. 蓝桥集训之日期差值

    2024-03-11 07:32:03       50 阅读
  7. 计算机网络的相关概念

    2024-03-11 07:32:03       43 阅读
  8. vue管理系统封装echarts

    2024-03-11 07:32:03       39 阅读
  9. 如何在paddlehub库中找到paddlehub.Module()所在的位置

    2024-03-11 07:32:03       48 阅读