1.首先我们需要修改docker服务的配置来暴露一个远程交互端口
1.1 修改docker服务配置文件
vim /lib/systemd/system/docker.service
1.2 按i进行编辑,添加以下内容,并按esc,最后按:wq保存
![](https://img-blog.csdnimg.cn/direct/3b1dd6262b8348dfa89c060fb8f235cc.png)
1.3 重新加载刚才修改的配置文件
systemctl daemon-reload
1.4 重启docker守护进程
systemctl restart docker
2. 配置好docker后我们尽可以写代码与docker守护进程进行交互了
2.1 我使用的是"github.com/fsouza/go-dockerclient"库(因为这是目前使用最多的库)提供的接口与docker守护进程进行交互,首先我们需要下载这个库
go get github.com/fsouza/go-dockerclient
2.2 下载好后,写代码来连接docker守护进程,其中192.168.30.123是你linux服务器的ip,大家需要自行修改。
package main
import (
"fmt"
docker "github.com/fsouza/go-dockerclient"
)
func main() {
client, err := docker.NewClient("http://192.168.30.123:2376")
if err != nil {
return
}
images, err := client.ListImages(docker.ListImagesOptions{All: false})
if err != nil {
panic(err)
}
for _, image := range images {
fmt.Println("ID: ", image.ID)
fmt.Println("RepoTags: ", image.RepoTags)
fmt.Println("Created: ", image.Created)
fmt.Println("Size: ", image.Size)
fmt.Println("ParentId: ", image.ParentID)
}
}
2.3 写好之后,编译和运行就可以连接上docker守护进程了,并成功的获得了所有镜像的信息。
其中,
ID: 是镜像ID
RepoTags: 是镜像标签,一个镜像可以有多个标签,所以它是[]string类型
Created: 是创建时间,它是unixNano格式,需要转换为人类可读的格式才能看懂
Size: 是镜像大小,它是int64类型,单位是字节,如果除以1024*1024就是MB了
ParentId: 是父镜像ID,如果没有父镜像,就会使空字符串
如果点赞到100的话,我会出一篇更详细的文章,包括镜像的创建、删除、查询、添加和删除标签、查看容器信息、启动容器、停止容器等使用golang语言与docker守护进行交互的教程。感谢大家的支持,如有错误欢迎指正。