我仍然使用 Docker 桌面在 MacBook Air 上運行容器。我知道有科利馬州,但沒有時間切換並處理後果。
我最近也開始使用 ko 來容器化我的 Go 應用程式。
我喜歡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?
顯然 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中文網其他相關文章!