最近在玩鯤鵬,由於鯤鵬的處理器是arm的,很多開源軟體如redis最新版本都沒有arm的映象,所以在鯤鵬上執行這些開源軟體會有問題
解決辦法也很簡單,把redis源**拉下來,使用原本的dockerfile在arm的基礎上在打包映象就好了
arm屬於精簡指令集(risc)和x86屬於複雜指令集(cisc)
那麼以後就可以用非常簡單的命令讓他去做很複雜的事情——比如只要說一句「吃飯」,他就會吃飯
可以看到linux下有很多主要的平台,那上面的redis來舉例,如果我要把redis移植到不同的平台難道還要每次都進行編譯?答案當然不是
既然我面臨這樣的問題,肯定其他人也面臨這樣的問題。
我們看下nginx 官方所提供的docker映象支援很多版本
docker buildx 是乙個cli外掛程式,擴充套件了docker命令,並完全支援 moby buildkit 構建器工具包提供的功能. 它提供了與 docker build 相同的使用者體驗,並具有許多新功能,例如:建立範圍內的構建器例項和同時針對多個節點進行構建。
直接安裝 docker v19.03 版本,該版本已包含 docker buildx 元件,因為目前還是實驗功能,預設沒有開啟。
開啟
$ vim ~/.docker/config.json
配置新增docker配置檔案,並重啟docker服務(systemctl daemon-reload systemctl restart docker)
環境變數配置開啟方法
$ export docker_cli_experimental=enabled
建立並使用
建立並使用
docker buildx create --use --name testbuilder
檢視docker buildx ls
如果要使用其他平台請執行相應平台命令 如下
$ docker run --rm -t arm64v8/ubuntu uname -m
aarch64
$ docker run --rm -t arm32v6/alpine uname -m
armv7l
$ docker run --rm -t ppc64le/debian uname -m
ppc64le
$ docker run --rm -t s390x/ubuntu uname -m
s390x
$ docker run --rm -t arm64v8/fedora uname -m
aarch64
$ docker run --rm -t arm32v7/centos uname -m
armv7l
$ docker run --rm -t ppc64le/busybox uname -m
ppc64le
注意你的dockerfile的基礎映象需要支援你的打包平台映象
from node:latest
你要打包成arm和x86的那麼,node基礎映象必須支援arm和x86
構建好的映象不會儲存本地,需要推送到映象倉庫,我這裡使用docker hub
docker login
docker buildx build -t daxion/buildx:opensips --platform=linux/arm,linux/arm64,linux/amd64 --push .
在push的時候我們可能會等很久出現這樣的錯誤
failed to solve: rpc error: code = unknown desc = server message: insufficient_scope: authorization failed
docker buildx build -t daxion/buildx:opensips --platform=linux/arm,linux/arm64,linux/amd64 . --push --output type=image,name=docker.io:443,push=true
最後成功截圖
Jenkins使用docker構建
jenkins master要將構建任務分配給docker,就必須在jenkins agent上安裝docker。建議給這些agent打上docker的標籤。在jenkins agent上安裝docker注意 要將 jenkins agent 的使用者加入docker的使用者組中,這樣jenkins...
使用docker 構建Yapi
1 建立 mongodb 資料卷 docker volume create mongo data yapi2.啟動 mongodb docker run d name mongo yapi v mongo data yapi data db mongo 暴漏本地介面啟動方式 docker run d...
windows 使用docker構建映象
一定要注意 先改下docker desktop的setting。不然生成映象直接 全都放到c盤。開啟cmd,到dockerfile的路徑 請把dockerfile單獨放到乙個目錄 使用docker build t image name 這個 就是當前目錄,然後就是漫長的等待。建立乙個基於某映象的容器...