Bagaimana untuk menggunakan Docker dengan Go?

WBOY
Lepaskan: 2023-05-11 16:01:42
asal
1625 orang telah melayarinya

Dengan mempopularkan teknologi pengkomputeran awan secara beransur-ansur, Docker, sebagai teknologi kontena ringan, telah menarik lebih banyak perhatian. Sebagai bahasa pengaturcaraan generasi baharu yang cekap dan ringkas, bahasa Go boleh meningkatkan kecekapan pembangunan pengaturcara apabila digabungkan dengan Docker. Artikel ini akan memperkenalkan cara menggunakan Docker dalam bahasa Go.

1. Pengenalan kepada Docker

Docker boleh dianggap sebagai mesin maya yang ringan berdasarkan bahasa Go, dengan ciri-ciri berikut:

  1. Kebolehurusan Kuat

Docker menyediakan mekanisme pengurusan lengkap yang bukan sahaja menguruskan aplikasi yang berbeza dengan berkesan, tetapi juga mengembangkan dan mengurangkan sumber secara fleksibel.

  1. Mudah digunakan

API Docker adalah ringkas dan mudah difahami serta boleh disepadukan dengan mudah ke dalam aplikasi.

  1. Simpan sumber perkakasan

Docker boleh memaksimumkan penggunaan sumber pelayan fizikal dan meningkatkan penggunaan perkakasan.

2. Cara menggunakan Docker dalam bahasa Go

Terdapat dua cara utama untuk menggunakan Docker dalam bahasa Go:

  1. Gunakan API Docker

Docker menyediakan antara muka REST API, yang boleh melaksanakan pengurusan kontena dan fungsi lain dengan menghantar permintaan HTTP.

Berikut ialah contoh mudah untuk menggambarkan cara menggunakan API Docker dalam bahasa Go.

Pertama, anda perlu menggunakan pakej "net/http" dalam bahasa Go untuk menghantar permintaan HTTP. Untuk maklumat terperinci tentang permintaan, sila rujuk dokumentasi rasmi Docker Contohnya, semasa membuat bekas, anda boleh menggunakan arahan berikut:

curl -X POST -H "Content-Type: application/json" -d '{

  "Image": "ubuntu",
  "AttachStdin": false,
  "AttachStdout": true,
  "AttachStderr": true,
  "Tty": true,
  "OpenStdin": true,
  "StdinOnce": false
}' http://localhost:4243/containers/create?name=myubuntu
Salin selepas log masuk

Antaranya, URL yang diminta ialah "http://localhost:4243/containers/create?name=myubuntu" dan jenis permintaan ialah POST. Jika penciptaan berjaya, ID bekas dikembalikan, jika tidak mesej ralat dikembalikan.

dilaksanakan dalam bahasa Go seperti berikut:

import (
"bait"
"pengekodan/json"
"io/ioutil"
"net/ http "
"os"
)

func createContainer(rentetan nama) (rentetan, ralat) {
//URL yang diminta
url := “http://localhost: 4243/containers/create?name=" + name
//Kaedah permintaan POST
req, err := http.NewRequest("POST", url, nol)
if err != nil {

return "", err
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
//Tetapkan maklumat pengepala permintaan
req.Header.Set("Content-Type", "application/json")
//Hantar permintaan
resp, err: = http.DefaultClient.Do(req)
if err != nil {

return "", err
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
defer resp.Body.Close()

//Baca hasil pulangan
kandungan, err := ioutil.ReadAll(resp.Body)
if err != nil {

return "", err
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

//Result returns by parsing
var respStruct struct {

Id string `json:"Id"`
Salin selepas log masuk

}
err = json.Unmarshal(content, &respStruct)
if err != nil {

return "", err
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
//Kembalikan ID bekas
return respStruct.Id, nil
}

  1. Menggunakan SDK bahasa Docker's Go

Docker secara rasmi menyediakan SDK bahasa Go, yang boleh digunakan terus dalam bahasa Go . Mula-mula pasang SDK melalui arahan berikut:

pergi dapatkan github.com/docker/docker/client

Kemudian gunakan "konteks" dan "github.com/docker/docker/client" daripada bahasa Go Pakej boleh menggunakan SDK Docker dengan mudah. Berikut ialah contoh mudah:

import (
"konteks"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
)

func main() {
//Connect Docker
ctx := context.Background()
dockerCli, err := client.NewClientWithOpts(client.FromEnv)
if err != nil {

panic(err)
Salin selepas log masuk
Salin selepas log masuk

}
//Senaraikan semua bekas
bekas, err := dockerCli.ContainerList(ctx, types.ContainerListOptions{})
if err ! = nil {

panic(err)
Salin selepas log masuk
Salin selepas log masuk

}
//Output ID bekas dan nama
untuk _, bekas := julat bekas {

fmt.Println(container.ID, container.Names)
Salin selepas log masuk

}
}

3. Ringkasan

Docker sememangnya teknologi kontena yang sangat baik, dan bahasa Go juga merupakan bahasa pengaturcaraan yang pesat membangun. Dengan menggabungkan kedua-duanya, pengaturcara boleh diberikan pengalaman pembangunan yang lebih cekap. Artikel ini memperkenalkan dua cara untuk menggunakan Docker dalam bahasa Go. Saya harap ia akan membantu pembaca.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Docker dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!