亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 docker Go 客戶端并行構建 docker 鏡像

使用 docker Go 客戶端并行構建 docker 鏡像

Go
慕哥9229398 2023-06-26 16:22:00
我正在使用 Docker 的 Go 客戶端來構建我的項目。我正在調用ImageBuild我的三個 Dockerfile(1.Dockerfile、2.Dockerfile和3.Dockerfile)作為測試。這是我的代碼:func GetContext(filePath string) io.Reader {? ? // Use homedir.Expand to resolve paths like '~/repos/myrepo'? ? filePath, _ = homedir.Expand(filePath)? ? ctx, err := archive.TarWithOptions(filePath, &archive.TarOptions{})? ? if err != nil {? ? ? ? panic(err)? ? }? ? return ctx}func testImageBuild() {? ? ctx := context.Background()? ? cli, err := client.NewEnvClient()? ? if err != nil {? ? ? ? log.Fatal(err, " :unable to init client")? ? }? ? var wg sync.WaitGroup? ? for i := 0; i < 3; i++ {? ? ? ? wg.Add(1)? ? ? ? go func(i int) {? ? ? ? ? ? defer wg.Done()? ? ? ? ? ? dockerFile := fmt.Sprintf("%d.Dockerfile", i)? ? ? ? ? ? imageBuildResponse, err := cli.ImageBuild(? ? ? ? ? ? ? ? ctx,? ? ? ? ? ? ? ? GetContext("."),? ? ? ? ? ? ? ? types.ImageBuildOptions{? ? ? ? ? ? ? ? ? ? Dockerfile: dockerFile,? ? ? ? ? ? ? ? ? ? Tags:? ? ? ?[]string{fmt.Sprintf("devbuild_%d", i)},? ? ? ? ? ? ? ? })? ? ? ? ? ? if err != nil {? ? ? ? ? ? ? ? log.Fatal(err, " :unable to build docker image"+string(1))? ? ? ? ? ? }? ? ? ? ? ? defer imageBuildResponse.Body.Close()? ? ? ? ? ? _, err = io.Copy(os.Stdout, imageBuildResponse.Body)? ? ? ? ? ? if err != nil {? ? ? ? ? ? ? ? log.Fatal(err, " :unable to read image build response "+string(1))? ? ? ? ? ? }? ? ? ? }(i)? ? }? ? wg.Wait()}func main() {? ? testImageBuild()}GetContext用于將目錄路徑打包為 Docker 的上下文。testImageBuild派生出三個不同的 goroutine 來構建三個不同的鏡像。我的問題是:當我運行這個時,標準輸出的輸出總是相同的并且似乎是確定性的,這讓我認為圖像實際上并不是并行構建的。我不熟悉 docker 如何構建其鏡像,而且這種方法似乎完全有可能只是并行向 docker 服務器發送請求,而不是實際并行構建。這是真的?如果是這樣,我如何并行構建我的項目?
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

如果我正確理解你的問題,你有一臺 docker 機器,你想在上面使用 GO 程序同時構建圖像。

我嘗試對構建相同映像的 Dockerfile 執行相同的操作,根據我的理解,所有這些都是同時構建的。

現在,在您的情況下,如果您使用 3 個不同的 docker 文件,那么它們肯定會有不同的構建時間,這意味著輸出似乎是確定性的


查看完整回答
反對 回復 2023-06-26
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號