Ina whakatau koe ki te tuhi i to paihikara ki te hopu matau mai i te docker hub, mai i te rehita ranei ki te whakahou aunoa/tīmata ipu i runga i te tūmau, ka kitea e koe he whai hua te Docker Cli hei awhina i te whakahaere i te Docker daemon i runga i to punaha.
Hei mahi, me hiahia koe ki te putanga Haere i te iti rawa 1.9.4
Mena kaore koe i huri ki nga waahanga, whakauruhia a Cli me te whakahau e whai ake nei:
go get github.com/docker/docker/client
Te whakahaere ipu
Ko te tauira e whai ake nei e whakaatu ana me pehea te whakahaere ipu ma te whakamahi i te Docker API. I runga i te raina whakahau, ka whakamahi koe i te whakahau docker run
, e nehenehe râ tatou e faaruru ohie noa i teie ohipa i roto i ta tatou taviniraa.
He rite tenei tauira ki te whakahaere i te whakahau docker run alpine echo hello world
package main {
ctx := context.Background()
cli, err := client.NewEnvClient()
if err != nil {
panic(err)
}
// Делаем docker pull
reader, err := cli.ImagePull(ctx, "docker.io/library/alpine", types.ImagePullOptions{})
if err != nil {
panic(err)
}
io.Copy(os.Stdout, reader)
hostBinding := nat.PortBinding{
HostIP: "0.0.0.0",
HostPort: "8000",
}
containerPort, err := nat.NewPort("tcp", "80")
if err != nil {
panic("Unable to get the port")
}
portBinding := nat.PortMap{containerPort: []nat.PortBinding{hostBinding}}
// Создаем контейнер с заданной конфигурацией
resp, err := cli.ContainerCreate(ctx, &container.Config{
Image: "alpine",
Cmd: []string{"echo", "hello world"},
Tty: true,
}, &container.HostConfig{
PortBindings: portBinding,
}, nil, "")
if err != nil {
panic(err)
}
// Запускаем контейнер
if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
panic(err)
}
// Получаем логи контейнера
out, err := cli.ContainerLogs(ctx, resp.ID, types.ContainerLogsOptions{ShowStdout: true})
if err != nil {
panic(err)
}
io.Copy(os.Stdout, out)
}
Te tiki rarangi o nga ipu rere
He rite tenei tauira ki te whakahaere i te whakahau 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)
}
// Получение списка запуцщенных контейнеров(docker ps)
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{})
if err != nil {
panic(err)
}
// Вывод всех идентификаторов контейнеров
for _, container := range containers {
fmt.Println(container.ID)
}
}
Kati nga ipu rere katoa
Inaianei kua ako koe ki te hanga me te whakahaere ipu, kua tae ki te wa ki te ako me pehea te whakahaere. Ko te tauira e whai ake nei ka mutu nga ipu rere katoa.
Kaua e whakahaere i tenei waehere ki runga i te tūmau whakaputa!
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)
}
// Получение списка запуцщенных контейнеров(docker ps)
containers, err := cli.ContainerList(ctx, types.ContainerListOptions{})
if err != nil {
panic(err)
}
for _, c := range containers {
fmt.Print("Stopping container ", c.ID[:10], "... ")
if err := cli.ContainerStop(ctx, c.ID, nil); err != nil {
panic(err)
}
fmt.Println("Success")
}
}
Nga raarangi whakaputa o te ipu kotahi
Ka taea e koe te mahi me nga ipu takitahi. Ko te tauira e whai ake nei ka ta i nga rakau o te ipu me te ID kua tohua. I mua i te tiimata, me whakarereke e koe te ID o te ipu e hiahia ana koe ki te tiki.
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}
// Измените id контейнера здесь
out, err := cli.ContainerLogs(ctx, "f1064a8a4c82", options)
if err != nil {
panic(err)
}
io.Copy(os.Stdout, out)
}
Te tiki rarangi whakaahua
He rite tenei tauira ki te whakahaere i te whakahau 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)
}
// Получение списка образов
images, err := cli.ImageList(context.Background(), types.ImageListOptions{})
if err != nil {
panic(err)
}
for _, image := range images {
fmt.Println(image.ID)
}
}
Kumea
He rite tenei tauira ki te whakahaere i te whakahau 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 alpine
out, err := cli.ImagePull(ctx, "docker.io/library/alpine", types.ImagePullOptions{})
if err != nil {
panic(err)
}
defer out.Close()
io.Copy(os.Stdout, out)
}
Tikiake ana i tetahi atahanga me te motuhēhēnga kaiwhakamahi
He rite tenei tauira ki te whakahaere i te whakahau docker pull
, me te motuhēhēnga.
Ka tukuna nga raraunga motuhēhēnga i roto i te tuhinga mārama. Ko nga rehita docker mana e whakamahi ana i te HTTPS,
Me whirihora hoki nga rehita motuhake ki te whakawhitiwhiti ma te whakamahi i te 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)
}
// Создание конфига с данными для аутентификации
authConfig := types.AuthConfig{
Username: "username",
Password: "password",
}
encodedJSON, err := json.Marshal(authConfig)
if err != nil {
panic(err)
}
authStr := base64.URLEncoding.EncodeToString(encodedJSON)
out, err := cli.ImagePull(ctx, "docker.io/library/alpine", types.ImagePullOptions{RegistryAuth: authStr})
if err != nil {
panic(err)
}
defer out.Close()
io.Copy(os.Stdout, out)
}
Source: will.com