【Azure 應用服務】App Service for Container 無法拉取Docker Hub中的映象替代方案

2023-06-19 21:00:26

問題描述

建立App Service Container服務,選擇從Docker Hub中獲取appsmith/appsmith-ce 映象(https://www.appsmith.com/ & https://hub.docker.com/r/appsmith/appsmith-ce/tags ), 但存取站點時遇見Application Error錯誤。檢視部署紀錄檔,發現問題原因是:

ERROR - Image pull failed: Verify docker image configuration and credentials (if using private repository)

問題解答

在App Service For Container 中,如果選擇從Docker Hub中獲取映象,App Service自動設定的Docker Hub Service URL是 https://index.docker.io。 這個地址可以在建立App Service時候的Review頁面中獲取,也可以從App Service的Configuration頁面中的DOCKER_REGISTRY_SERVER_URL設定中檢視。

因為在中國區的特殊情況下,當docker.io無法存取或者存取不穩定的情況下,就會出現Image pull failed的情況。

由於無法修改Docker Hub 在App Service中設定的Service URL,所以只有兩種辦法來緩解這種情況:

1) 把需要的映象想辦法上傳到中國區的ACR(Azure Container Registry)中, 這樣就不會面臨存取攔截的問題。

2) 使用私有映象庫(Private Registry), 在面臨Docker Hub(docker.io) 無法從中國區存取的情況,有很多映象代理庫同樣可以下載到與Docker Hub相同的映象檔案。

所以,本文中使用的代替存取就是:

使用 Private Registry 並設定代理URL ( https://dockerhub.azk8s.cn/ )用於替換 Docker Hub( https://index.docker.io)

 

設定修改對比截圖:

修改完成後,再次檢視紀錄檔:

2023-06-19T07:16:29.498Z INFO - Status: Downloaded newer image for dockerhub.azk8s.cn/appsmith/appsmith-ce:release

2023-06-19T07:16:29.501Z INFO - Pull Image successful, Time taken: 3 Minutes and 52 Seconds

拉取映象成功,驗證存取站點,也成功了。

 

參考資料:

Container Registry Proxy : https://github.com/Azure/container-service-for-azure-china/blob/master/aks/README.md

appsmith/appsmith-ce 映象: https://www.appsmith.com/  or  https://hub.docker.com/r/appsmith/appsmith-ce/tags