最近將手邊幾個大型專案收尾,因應落地客戶的需求,陸續將應用環境從GCP 移往騰訊雲去。
原先算盤打得很好,想說所有的服務都透過 docker 完成建置,還特別引入 docker-compose 完成多容器建置與相關環境變數配置等,所有的參數還在 GCP 完成跨域驗證。果然還是指導教授常引用的那句話- 實踐是檢驗真理的唯一標準。事情果然不會如預想的一帆風順。
先帶問題: 我把基本的專案配置移往騰訊雲,神奇的地方是: 一樣的配置在騰訊雲的主機上,光透過 Dockerfile 拉映像檔就出現問題,無法順利將資源拉下來;但我在台灣的環境與 GCP 上都很順利。
這其實有點意外,畢竟幾年前我也配置過,怎麼可能會有拉不下來的狀況。特別是 docker 的團隊不至於這麼掉漆。交叉查了一下,原來有個重磅的訊息沒有跟進到- Docker 中國官方鏡像在2023年已經關站。這也是導致為什麼幾年前配置時我沒有遇到問題,但後來卻遇到問題的主因。
我們都知道中國境內因應相關工信法規限制,對外部網際網路是有相對保護與限縮。
查了中國境內的相關資料與說法是因為對外的海底電纜流量有限,為了提供境內用戶有比較流暢的體驗,多數的資源建議透過鏡像雲存取,這樣的效率會遠比外部網際網路更有效率。
工程師還是要解決問題,既然如此我們就配合調整。其實騰訊雲也有配置相關說明文檔,但我們就將重點摘錄出來: <騰訊雲- 安装 Docker 并配置镜像加速源>
官方建議的標準程序是去改Docker Daemon 配置。以 Debian 系統為例,需要的腳本操作如下:
# 打開 Docker Daemon 配置檔案。預設應該是不存在的,可以使用 sudoer 的身分自行配置
sudo vim /etc/docker/daemon.json
# 更換映像檔案下載源頭
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
# 完成輸入後,使用: wq! 即可儲存並關閉檔案
# 重新啟動 docker 服務
sudo systemctl restart docker
基本上這樣的調整就完成相關配置了。
但也會遇到工程師有所堅持,可不可以不要這麼麻煩,我在拉映像檔案時,直接指定要拉取的映像檔案位置可不可以,這樣我也就不會被侷限住,甚至不需要重新啟動 docker 服務
sudo docker pull mirror.ccs.tencentyun.com/library/mongo:latest
這樣就可以輕鬆解決掉這個困擾的問題了!