ドキュメンテーション!
Dockerハブまたはレジストリからフックをキャッチしてサーバー上のコンテナーを自動的に更新/起動する独自の自転車を作成する場合、Docker Cliを使用して、システム上のDockerデーモンを管理できます。

作業には、1.9.4以上のGoバージョンが必要です。
まだモジュールに切り替えていない場合は、次のコマンドでCliをインストールします。
go get github.com/docker/docker/client 
コンテナ打ち上げ
次の例は、Docker APIを使用してコンテナーを開始する方法を示しています。 コマンドラインでは、 docker runを使用しますが、サービスでこのタスクに簡単に対処できます。
この例は、 docker run alpine echo hello worldを実行するのと同等です
 package main { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }  
実行中のコンテナのリストを取得する
この例は、 docker ps実行と同等です
 package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { cli, err := client.NewEnvClient() if err != nil { panic(err) }  
実行中のコンテナをすべて停止します
コンテナを作成して実行する方法を学んだら、それらを管理する方法を学びます。 次の例は、実行中のすべてのコンテナを停止します。
本番サーバーでこのコードを実行しないでください!
 package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }  
単一のコンテナのロギング
個々のコンテナで作業できます。 次の例は、指定された識別子を持つコンテナのログを表示します。 開始する前に、ログを受信するコンテナの識別子を変更する必要があります。
 package main import ( "context" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) } options := types.ContainerLogsOptions{ShowStdout: true}  
画像のリストを取得する
この例は、 docker image ls実行と同等です
 package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { cli, err := client.NewEnvClient() if err != nil { panic(err) }  
引く
この例は、 docker pullを実行するのと同等です
 package main import ( "context" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }  
ユーザー認証を使用したイメージのダウンロード
この例は、認証を使用してdocker pullを実行するのと同等です。
認証データはクリアテキストで送信されます。 公式のdockerレジストリはHTTPSを使用し、
HTTPSを使用してデータを送信するようにプライベートレジストリも構成する必要があります。
 package main import ( "context" "encoding/base64" "encoding/json" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }