# MacOS 上 Colima 增加額外 CA cert 如果你因為這樣那樣的原因,在 `docker pull` 的過程中需要額外的 CA cert,也就是說你看到了 "x509: certificate signed by unknown authority" 的錯誤訊息,又跟我一樣在 MacOS 上使用 Colima 來取代 Docker Desktop 的話,可以參考以下 順帶一提,如果你的 docker host 就是在 linux 上,可以直接參考這篇: [[CentOS] 執行 docker login 時,出現 certificate signed by unknown authority 的錯誤訊息? | EPH 的程式日記](https://ephrain.net/centos-%E5%9F%B7%E8%A1%8C-docker-login-%E6%99%82%EF%BC%8C%E5%87%BA%E7%8F%BE-certificate-signed-by-unknown-authority-%E7%9A%84%E9%8C%AF%E8%AA%A4%E8%A8%8A%E6%81%AF%EF%BC%9F/) ## 一點點背景知識 Colima 會在你的 MacOS 上開一個 Linux 的 VM (MacOS 12 以前是透過 Qemu),dockerd 就是跑在這個 VM 裡面,所以 `docker pull` 下載檔案時會看的憑證是在這個 VM 裡面設定的憑證,也就是說,我們的目標是把額外的憑證加到這個 VM 裡 另外,Colima 會把 MacOS 這一層的 `$HOME` 和 `/tmp/colima` 掛到 VM 對應的路徑上,這以外的路徑在 VM 裡是看不到的,所以你需要先把憑證檔案複製到這兩個路徑其中之一底下 ## 步驟 1. 如果 colima 已經在執行中,先 `colima stop` 2. `colima start --edit` (Ref: https://github.com/abiosoft/colima/blob/main/docs/FAQ.md#can-config-file-be-used-instead-of-cli-flags) 3. 找到 `provision:` 這段,改成: ```yaml provision: - mode: system script: | cp /Users/user/extra_ca.pem /usr/local/share/ca-certificates/ update-ca-certificates ``` 上面 `/Users/user/extra_ca.pem` 請改成實際路徑,注意前一段說的要放在`$HOME` 或 `/tmp/colima` 底下 4. 存檔、離開 editor,等 `colima start` 結束後,再試一次 `docker pull` 或 `docker build` `--edit` 的結果可以在 `$HOME/.colima/default/config.yaml` 確認 ## 如果在 `docker build` 過程中下載檔案遇到憑證問題 這裡的背景是 `go mod download` 一樣出現 `x509....` 的訊息,我使用的是 `golang:1.19-buster` 也就是 debian based 的 image;所以如果是不同的 image 可能處理方式會有所不同 由於 `docker build` 只能複製 `context` 內的檔案,你需要先把憑證複製到 `context` (通常就是 Dockerfile 在的資料夾) ```dockerfile COPY extra_ca.pem /usr/local/share/ca-certificates/extra_ca.pem RUN cat /usr/local/share/ca-certificates/extra_ca.pem >> /etc/ssl/certs/ca-certificates.crt ``` 這裡我也不曉得為什麼 `update-ca-certificates` 沒有作用,但至少手動 `cat` 是有用的 Ref: https://stackoverflow.com/a/70087108
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up