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:
Docker menyediakan mekanisme pengurusan lengkap yang bukan sahaja menguruskan aplikasi yang berbeza dengan berkesan, tetapi juga mengembangkan dan mengurangkan sumber secara fleksibel.
API Docker adalah ringkas dan mudah difahami serta boleh disepadukan dengan mudah ke dalam aplikasi.
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:
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
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
}
//Tetapkan maklumat pengepala permintaan
req.Header.Set("Content-Type", "application/json")
//Hantar permintaan
resp, err: = http.DefaultClient.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
//Baca hasil pulangan
kandungan, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
//Result returns by parsing
var respStruct struct {
Id string `json:"Id"`
}
err = json.Unmarshal(content, &respStruct)
if err != nil {
return "", err
}
//Kembalikan ID bekas
return respStruct.Id, nil
}
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)
}
//Senaraikan semua bekas
bekas, err := dockerCli.ContainerList(ctx, types.ContainerListOptions{})
if err ! = nil {
panic(err)
}
//Output ID bekas dan nama
untuk _, bekas := julat bekas {
fmt.Println(container.ID, container.Names)
}
}
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!