首頁 >後端開發 >Golang >修復 MacO 上的本機映像發布問題

修復 MacO 上的本機映像發布問題

王林
王林原創
2024-07-22 22:43:32729瀏覽

Fixing ko local image publishing on MacOs

前言:

我仍然使用 Docker 桌面在 MacBook Air 上運行容器。我知道有科利馬州,但沒有時間切換並處理後果。
我最近也開始使用 ko 來容器化我的 Go 應用程式。

ko 很棒但是...

我喜歡ko - 它建立了無發行版的安全且纖薄的映像。但有一個問題 - 預設情況下 - ko build 將產生的映像推送到遠端註冊表。
對於持續交付來說還不錯,但是我做了很多實驗,我並不總是想將我創建的所有垃圾發佈到遠端 - 試圖考慮網路頻寬和圖像儲存。

所以我想將圖像建置到本地圖像儲存中。
可以使用 ko build 來做到這一點。 -L
只是在 MacO 上,這對我來說失敗了,原因如下:

2024/07/22 15:52:50 Loading otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 15:52:50 daemon.Write response:
Error: failed to publish images: error publishing ko://github.com/otomato/myapp: error loading image: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

呼叫 Docker 守護程式

顯然 ko 內部的 docker 用戶端正在嘗試聯繫標準套接字上的 Docker 守護進程,但失敗了。

我嘗試用谷歌搜尋這個錯誤,但沒有找到任何東西。所以我決定自己解決。
事情是這樣的- 在MacOS 上,Docker 套接字不是標準的/var/run/docker.sock - 相反,它位於~/Library/Containers/com.docker.docker/Data/docker.raw.sock

解決方案

為了解決這個問題,我需要做的是建立一個從實際 Docker 套接字到標準 Docker 用戶端期望找到它的符號連結:

sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.raw.sock /var/run/docker.sock

現在可以透過標準套接字位址聯絡 Docker 守護程式 - ko 可以將映像推送到它:

ko build . -B -L --platform linux/arm64
2024/07/22 16:04:04 Building github.com/otomato/myapp for linux/arm64
2024/07/22 16:04:04 Loading otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 16:04:05 Loaded otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 16:04:05 Adding tag latest
2024/07/22 16:04:05 Added tag latest
otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa

同時我還在 ko repo 上開啟了一個問題。但在它被修復之前 - 這個技巧就像魅力一樣。

希望這也能幫到你。

以上是修復 MacO 上的本機映像發布問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn