這段時間在做一個手上的產品往Arm版本的Linux上部署的測試,相信已經有不少人蔘與過轟轟烈烈的軟硬件國產化自研運動中,背景這裏就不多說了,本文這裏主要介紹的是一個在環境部署過程中遇到的一些問題。
那個產品本身依賴着三四個外部中間件的,之前一直是用的docker部署,雖然我平時用的都是x86的環境,但查詢過這些軟件都支持arm64的版本。最初我以爲用docker可以直接一鍵搞定的。誰知給我用的那個華爲鯤鵬服務器的網絡環境奇慢無比,並且慢就算了,還不穩定,下載下載着就斷了。試了一下午實在無法搞定。
我試了一下,這個機器的上傳速度還湊活,便想能不能在外部下載鏡像後再上傳上去。但我手頭上都是x86的環境,以前的docker compose文件下載下來的是x86架構的,不能直接使用。我便想是否有類似交叉編譯的那樣,能跨架構下載鏡像的參數可以配置,查詢了一下,果然還有,基本操作是如下幾步。
- 先修改docker服務加參數–experimental=true (默認開啓了, 不用執行這一步, 不行的話通過docker version查看)
- 拉取的時候添加--platform arm64
- 拉完後用docker inspect確認一下這個鏡像是不是你要的架構的.
示例:
docker pull --platform arm64 redis
docker inspect redis
這個platform參數在docker-compose文件中也是可以用,批量配置還是比較方便的。
導入導出:
拉完了後,用save導出,import導出。
docker save -o images.tar redis
docker load -i images.tar
這個命令也是是可以支持一次性導入,導出多個鏡像文件的,非常方便。
參考文章: