概述
Docker介绍
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口.
go操作Docker
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复