go docker sdk 第三章

go docker sdk 第三章

容器数据卷操作

创建数据卷

本地创建一个数据卷myvolume,并将容器/root 目录与容器卷关联,命令行docker volume inspect myvolume可查看本地数据卷存放位置

package containers_test

import (
	"context"
	"fmt"
	"log"
	"os"
	"runtime"
	"strconv"
	"testing"

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

var (
	cli    *client.Client
	logger *log.Logger = log.New(os.Stdout, "", log.LUTC)
)

func Fatalln(a ...any) {
	_, file, line, _ := runtime.Caller(1)
	acopy := make([]any, len(a)+1)
	acopy[0] = file + ":" + strconv.Itoa(line)
	copy(acopy[1:], a)
	logger.Println(acopy...)
	os.Exit(0)
}
func init() {
	var err error
	cli, err = client.NewClientWithOpts(client.WithVersion("1.43"), client.WithHost("http://192.168.101.7:2999"))
	if err != nil {
		Fatalln(err)
	}
}

const HOSTIP = "192.168.101.7"

func TestC3(t *testing.T) {
	_, err := cli.VolumeCreate(context.Background(), volume.CreateOptions{Name: "myvolume"})
	if err != nil {
		Fatalln(err)
	}
	resp, err := cli.ContainerCreate(context.Background(), &container.Config{
		Env: []string{"RABBITMQ_DEFAULT_USER=cho", "RABBITMQ_DEFAULT_PASS=123"}, Image: "rabbitmq:management"}, &container.HostConfig{
		Binds: []string{"myvolume:/var/lib/rabbitmq:rw"},//rw 是读写模式,ro 是只读,wo是只写。第一个参数为上面创建的数据卷
		PortBindings: nat.PortMap{
			"5672":  []nat.PortBinding{nat.PortBinding{HostIP: HOSTIP, HostPort: "5672"}},
			"15672": []nat.PortBinding{nat.PortBinding{HostIP: HOSTIP, HostPort: "15672"}},
		},
	}, &network.NetworkingConfig{}, nil, "rabbitmq3")
	if err != nil {
		Fatalln(err)
	}
	fmt.Println("create container success " + resp.ID)
	err = cli.ContainerStart(context.Background(), resp.ID, container.StartOptions{})
	if err != nil {
		Fatalln(err)
	}
	fmt.Println("start container success")

}

命令行执行go test -v c3_test.go调试

相关推荐

  1. Linux

    2024-03-18 05:40:05       30 阅读

最近更新

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

    2024-03-18 05:40:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 05:40:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 05:40:05       82 阅读
  4. Python语言-面向对象

    2024-03-18 05:40:05       91 阅读

热门阅读

  1. 简述VS C++,Win32 API 和MFC之间的关系?

    2024-03-18 05:40:05       37 阅读
  2. FreeRTOS入门基础

    2024-03-18 05:40:05       44 阅读
  3. C#命名空间基础及案例

    2024-03-18 05:40:05       45 阅读
  4. django 定时任务的创建

    2024-03-18 05:40:05       35 阅读
  5. HJ31 单词倒排

    2024-03-18 05:40:05       38 阅读
  6. cache的58问,您能回答上几个

    2024-03-18 05:40:05       41 阅读
  7. Python sorted()函数

    2024-03-18 05:40:05       34 阅读
  8. 前端项目构建过程中的思考落地以及拓展

    2024-03-18 05:40:05       35 阅读
  9. MySQL基础知识

    2024-03-18 05:40:05       33 阅读
  10. 基于Python的股票市场分析:趋势预测与策略制定

    2024-03-18 05:40:05       45 阅读
  11. 解决 sh 和 bash 在执行脚本时的差异:双括号问题

    2024-03-18 05:40:05       34 阅读
  12. AJAX-XMLHttpRequest

    2024-03-18 05:40:05       41 阅读