首页 > 其他分享 >golang导出docker镜像

golang导出docker镜像

时间:2023-03-20 17:58:30浏览次数:43  
标签:testing string err args golang downloadDockerImage 镜像 docker imageTagName

1. 下载镜像

// downloadDockerImage imageTagName := "k8s.gcr.io/etcd:3.5.0-0"
func downloadDockerImage(imageTagName string) (string, error) {
    // 要执行的命令
    _, dockerFileName := filepath.Split(imageTagName)
    dockerCommand := fmt.Sprintf("docker save -o %s.tar %s", dockerFileName, imageTagName)
    cmd := exec.Command("bash", "-c", dockerCommand)
    // CombinedOutput-->捕获异常跟命令输出的内容
    output, err := cmd.CombinedOutput()
    if err != nil {
        return "", err
    }
    return string(output), nil
}

2. 单元测试

package internal

import "testing"

func TestOutputDockerImage(t *testing.T) {
    type args struct {
        imageTagName string
    }
    tests := []struct {
        name    string
        args    args
        want    string
        wantErr bool
    }{
        {
            name: "test output images",
            args: args{
                imageTagName: "nginx:1.14-alpine",
            },
            want:    "",
            wantErr: false,
        },
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            got, err := downloadDockerImage(tt.args.imageTagName)
            if err != nil {
                t.Fatal(err)
            }
            t.Log(got)
        })
    }
}

 

标签:testing,string,err,args,golang,downloadDockerImage,镜像,docker,imageTagName
From: https://www.cnblogs.com/xuweiqiang/p/17237166.html

相关文章

  • run mysql server in docker with exist database
    step1:putyourdatabasein$mysql_data_dirfirststep2:putyourmy.confto$mysql_cnf,forexample:thatmy.cnffromalibabacloud[mysqld]pid-file......
  • Docker:docker基本概念
    前言docker必须安装在linux操作系统docker基本概念镜像(image)镜像是一整套【应用+环境】的集合。可以类比为Java的类容器(container)容器是镜像的实例。可以类比为Java......
  • Docker:docker为什么出现
    docker解决的痛点在没有使用docker前。一般的开发和部署流程是这样的:一个项目会用到各种各样的技术和环境配置,开发人员需要在本地搭建开发环境进行开发等开发完之后。......
  • docker 容器内系统时区tomcat时区修改
    现象:查看docker容器运行的项目的日志时发现时间与北京时间差8小时原因:很容易猜到是容器时区错误,使用的是协调世界时UTC,可以近似看作0时区,我们中国应该使用......
  • install mysql in docker
    installmysqlindocker#step-1:configuremysql_port='3306'mysql_password='123qwe'mysql_data_dir="~/docker/mysqld_${mysql_port}/data"#step-2:delete-da......
  • macOS 13.3 Beta 4 (22E5246b)With OpenCore 0.9.1开发版 and winPE双引导分区原版镜像
    镜像特点完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要,可以自行直接替换opencore分区文......
  • golang面试题单向链表和双向链表
    甲流难受中,简单发一个链表 1.单项列表packagemainimport( "fmt" "strconv")typeNodestruct{ valueint next*Node}typeLinkliststruct{ leni......
  • Docker compose Mysql 8 sql_mode 配置及修改only_full_group_by docker sql_mode 'N
    mysql默认的配置sql_mode包含ONLY_FULL_GROUP_BY,我们要去掉,网上找了好多帖子,大多数copy来copy去,说的乱七八糟,很无奈,最后折腾了半天才搞定,主要是注意2点1、先明白你的mysq......
  • 小心golang中的无类型常量
    对于无类型常量,可能大家是第一次听说,但这篇我就不放进拾遗系列里了。因为虽然名字很陌生,但我们每天都在用,每天都有无数潜在的坑被埋下。包括我本人也犯过同样的错误,当时代......
  • 二进制部署docker docker-20.10.7
    1、下载 docker二进制包文件官网下载地址​​​https://download.docker.com/linux/static/stable/x86_64/​​wgethttps://download.docker.com/linux/static/stable/x86......