go语言流操作 go语言技巧

如何使用Go语言是操作DockerDocker 提供了一个与 Docker 守护进程交互的 API (称为Docker Engine API),我们可以使用官方提供的 Go 语言的 SDK 进行构建和扩展 Docker 应用程序和解决方案 。
转自:
整理:地鼠文档
通过下面的命令就可以安装 SDK 了:
该部分会介绍如何使用 Golang + Docker API 进行管理本地的 Docker 。
第一个例子将展示如何运行容器,相当于docker run docker.io/library/alpine echo "hello world":
还可以在后台运行容器,相当于docker run -d bfirsh/reticulate-splines:
列出正在运行的容器,就像使用docker ps一样:
如果是docker ps -a,我们可以通过修改types.ContainerListOptions中的All属性达到这个目的:
通过上面的例子,我们可以获取容器的列表,所以在这个案例中,我们可以去停止所有正在运行的容器 。
通过指定容器的 ID,我们可以获取对应 ID 的容器的日志:
获取本地所有的镜像 , 相当于docker image ls或docker images:
拉取指定镜像,相当于docker pull alpine:
除了公开的镜像,我们平时还会用到一些私有镜像,可以是DockerHub上私有镜像,也可以是自托管的镜像仓库,比如harbor。这个时候,我们需要提供对应的凭证才可以拉取镜像 。
值得注意的是:在使用Docker API的Go SDK时 , 凭证是以明文的方式进行传输的,所以如果是自建的镜像仓库,请务必使用HTTPS!
我们可以将一个已有的容器通过commit保存成一个镜像:
当然,除了可以管理本地的Docker,我们同样也可以通过使用Golang + Docker API管理远程的Docker。
默认Docker是通过非网络的Unix套接字运行的,只能够进行本地通信(/var/run/docker.sock),是不能够直接远程连接Docker的 。
我们需要编辑配置文件/etc/docker/daemon.json,并修改以下内容(把192.168.59.3改成你自己的IP地址),然后重启Docker:
创建client的时候需要指定远程Docker的地址 , 这样就可以像管理本地Docker一样管理远程的Docker了:
现在已经有很多可以管理 Docker 的产品,它们便是这样进行实现的,比如:portainer。
go语言语法(基础语法篇)import "workname/packetfolder"
导入多个包
方法调用 包名.函数//不是函数或结构体所处文件或文件夹名
packagename.Func()
前面加个点表示省略调用go语言流操作,那么调用该模块里面go语言流操作的函数,可以不用写模块名称了:
当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已 。下划线的作用仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数
import _ package
变量声明必须要使用否则会报错 。
全局变量运行声明但不使用 。
func 函数名 (参数1,参数2,...) (返回值a 类型a, 返回值b 类型b,...)
func 函数名 (参数1,参数2,...) (返回值类型1, 返回值类型2 , ...)
func (this *结构体名) 函数名(参数 string) (返回值类型1, 返回值类型2){}
使用大小来区分函数可见性
大写是public类型
小写是private类型
func prifunc int{}
func pubfunc int{}
声明静态变量
const value int
定义变量
var value int
声明一般类型、接口和结构体
声明函数
func function () int{}
go里面所有的空值对应如下
通道类型
内建函数 new 用来分配内存,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配类型零值的指针
func new(Type) *Type

推荐阅读