golangでdockerを操作した時のメモです
環境
Manjaro Linux
go version go1.9.4 linux/amd64
dep
読み込むパッケージ
main.go
import (
"github.com/moby/moby/client"
"github.com/docker/go-connections/nat"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/network"
"context"
"net/http"
"fmt"
)
dockerのイメージリストを取得(ローカル)
とりあえずイメージ一覧を取得してきます
main.go
func main() {
ctx := context.Background()
cl, _ := client.NewEnvClient()
list, _ := cl.ImageList(ctx, types.ImageListOptions{All: true})
fmt.Println(list)
}
これをdockerをインストールされているpcで動かすとリストを取得することができます
dockerのイメージリストを取得(リモート)
main.go
func main() {
ctx := context.Background()
tr := &http.Transport{}
image, _ := client.NewClient("http://<IPアドレス>:<ポート>", client.DefaultVersion, &http.Client{Transport: tr}, map[string]string{})
list, _ := cl.ImageList(ctx, types.ImageListOptions{All: true})
fmt.Println(list)
}
NewEnvClientでいい感じにしたかったんですが...GoDoc見てもいまいちわからなかったのでNewClientを採用.
ただコード見た感じNewClientもNewClient結局同じものを読んでいるみたいなのでこのままにしておきます.
ちなみにdocker clientのデフォルトのポートは2375みたいです.
まとめ
dockerのRemote APIは2375のポートをデフォルトで使っているみたいなので基本から何もいじってなければ多分大丈夫だと思います
参考
https://godoc.org/github.com/docker/docker/client
https://docs.docker.com/develop/sdk/