如何使用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语言文件操作本文主要介绍了Go语言中文件读写的相关操作 。
文件是什么?
计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件 。
os.Open() 函数能够打开一个文件,返回一个 *File 和一个 err。对得到的文件实例调用 close() 方法能够关闭文件 。
为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句 。
Read方法定义如下:
它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回 0 和 io.EOF。举个例子:
使用for循环读取文件中的所有数据 。
bufio是在file的基础上封装了一层API,支持更多的功能 。
io/ioutil 包的 ReadFile 方法能够读取完整的文件 , 只需要将文件名作为参数传入 。
os.OpenFile() 函数能够以指定模式打开文件,从而实现文件写入相关功能 。
其中:
name :要打开的文件名flag :打开文件的模式 。模式有以下几种:
perm :文件权限,一个八进制数 。r(读)04,w(写)02,x(执行)01 。
go语言操作符 ^ 和 &^很多语言都是采用 ~ 作为按位取反运算符,Go 里面采用的是 ^。
如果作为二元运算符,^ 表示按位异或,即:对应位相同为 0,相异为 1 。
操作符 ^,按位置零,例如:z = x ^ y , 表示如果 y 中的 bit 位为 1 , 则 z 对应 bit 位为 0,否则 z 对应 bit 位等于 x 中相应的 bit 位的值 。
推荐阅读
- 恋爱养成类游戏app安卓,恋爱养成类游戏在线玩
- 什么是社交类直播平台,社交类直播平台哪个好
- 飞行工厂手机游戏,飞行工厂手机游戏怎么玩
- 毕业设计答辩PPT模板网站靠谱,毕业设计答辩ppt制作范例
- 在c语言怎么定义函数调用 在c语言怎么定义函数调用数组
- html5drawdatagrid的简单介绍
- 相扑解谜游戏,相扑解说
- 直播软件一星,2020直播软件排行榜
- php和go语言哪个难 go和php性能比较