我是靠谱客的博主 英勇小懒猪,这篇文章主要介绍go操作Docker,现在分享给大家,希望可以做个参考。

Docker介绍

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口.

go操作Docker

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main import ( "context" "fmt" "github.com/docker/cli/cli/connhelper" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/client" "github.com/docker/go-connections/nat" "net/http" "time" ) func main() { // 连接docker helper, err := connhelper.GetConnectionHelper("ssh:/username@ip:22") if err != nil { panic(err) } httpClient := &http.Client{ Transport: &http.Transport{ DialContext: helper.Dialer, }, } c, err := client.NewClientWithOpts( client.WithHTTPClient(httpClient), client.WithHost(helper.Host), client.WithDialContext(helper.Dialer), ) fmt.Println(c.ImageList(context.Background(), types.ImageListOptions{})) // 创建容器 ctx := context.Background() resp, err := c.ContainerCreate(ctx, &container.Config{ Image: "mongo", ExposedPorts: nat.PortSet{ "27017/tcp": {}, }, }, &container.HostConfig{ PortBindings: nat.PortMap{ "27017/tcp": []nat.PortBinding{ { // 映射本地端口; //HostPort给0默认随机选择一个空闲的端口 HostIP: "127.0.0.1", HostPort: "0", }, }, }, }, nil, nil, "") if err != nil { panic(err) } // 启动刚才创建的容器 err = c.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}) if err != nil { panic(err) } // 休闲30s time.Sleep(3 * time.Second) // 杀死并且删除刚才创建的容器 err = c.ContainerRemove(ctx, resp.ID, types.ContainerRemoveOptions{Force: true}) if err != nil { panic(err) } }

最后

以上就是英勇小懒猪最近收集整理的关于go操作Docker的全部内容,更多相关go操作Docker内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部