精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

巧用 Docker Buildx 構建多種系統架構鏡像

系統 Linux
本文將講解如何使用 Buildx 構建多種系統架構的鏡像。

 Docker Buildx 是一個 Docker CLI 插件,其擴展了 Docker 命令,支持 Moby BuildKit 提供的功能。提供了與 Docker Build 相同的用戶體驗,并增加了許多新功能。

BuildKit 是下一代的鏡像構建組件,主要特點有很多,本文主要使用其可以編譯多種系統架構的特性。

網址:https://github.com/moby/buildkit

需要注意的是,該功能僅適用于 Docker v19.03+ 版本。

本文將講解如何使用 Buildx 構建多種系統架構的鏡像。

在開始之前,已經默認你在 Linux 系統(各大發行版)下安裝好了 64 位的 Docker。

在寫本文時,Docker 最新版本號是 19.03.13。 

  1. $ docker version  
  2. Client: Docker Engine - Community  
  3.  Version:           19.03.13  
  4.  API version:       1.40  
  5.  Go version:        go1.13.15  
  6.  Git commit:        4484c46d9d  
  7.  Built:             Wed Sep 16 17:03:45 2020  
  8.  OS/Arch:           linux/amd64  
  9.  Experimental:      true  
  10. Server: Docker Engine - Community 
  11.  Engine:  
  12.   Version:          19.03.13  
  13.   API version:      1.40 (minimum version 1.12)  
  14.   Go version:       go1.13.15  
  15.   Git commit:       4484c46d9d  
  16.   Built:            Wed Sep 16 17:02:21 2020  
  17.   OS/Arch:          linux/amd64  
  18.   Experimental:     false  
  19.  containerd:  
  20.   Version:          1.3.7  
  21.   GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175  
  22.  runc:  
  23.   Version:          1.0.0-rc10  
  24.   GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd  
  25.  docker-init:  
  26.   Version:          0.18.0  
  27.   GitCommit:        fec3683 

1. 啟用 Buildx

buildx 命令屬于實驗特性,因此首先需要開啟該特性。

上面的查看 Docker 版本返回的內容中,如果出現 Experimental: true 字樣就代表已經開啟該特性了。下面的這一步驟就可以省略。

編輯 ~/.docker/config.json 文件,新增如下內容(以下的演示適用于事先不存在 .docker 目錄的情況下) 

  1. $ mkdir ~/.docker  
  2. $ cat > ~/.docker/config.json <<EOF  
  3.  
  4. "experimental": "enabled"  
  5.  
  6. EOF 

Linux/macOS 下可以通過設置環境變量的方式啟用(不推薦): 

  1. $ export DOCKER_CLI_EXPERIMENTAL=enabled 

2. 新建 Builder 實例

在 Docker 19.03+ 版本中可以使用 docker buildx build 命令使用 BuildKit 構建鏡像。該命令支持 --platform 參數可以同時構建支持多種系統架構的 Docker 鏡像,大大簡化了構建步驟。

由于 Docker 默認的 builder 實例不支持同時指定多個 --platform ,我們必須首先創建一個新的 Builder 實例。 

  1. $ docker buildx create --name mybuilder --driver docker-container 

返回新的 Builder 實例名,為「mybuilder」 

  1. mybuilder 

使用新創建好的 Builder 實例 

  1. $ docker buildx use mybuilder 

查看已有的 Builder 實例 

  1. $ docker buildx ls  
  2. NAME/NODE    DRIVER/ENDPOINT             STATUS   PLATFORMS  
  3. mybuilder *  docker-container  
  4.   mybuilder0 unix:///var/run/docker.sock inactive   
  5. default      docker  
  6.   default    default                     running  linux/amd64, linux/386 

Docker 在 Linux/AMD64 系統架構下是不支持 ARM 架構鏡像,因此我們可以運行一個新的容器(Emulator)讓其支持該特性,Docker 桌面版則無需進行此項設置。

  •  方法一: 
  1. $ docker run --rm --privileged docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64 

注:docker/binfmt 可以參考網址:https://hub.docker.com/r/docker/binfmt/tags 獲取最新鏡像

  •  方法二(推薦) 
  1. $ docker run --rm --privileged tonistiigi/binfmt --install all 

可參考網址:https://hub.docker.com/r/tonistiigi/binfmt 獲取最新鏡像。目前(2021/04/20 更新)的 Qemu version: 5.0.0

3. 新建 Dockerfile 文件

要想構建多種系統架構的鏡像,還需要一個支持的 Dockerfile 文件。

以下是一個示例的 Dockerfile 文件。

參考鏈接:https://github.com/teddysun/across/blob/master/docker/kms/Dockerfile.architecture

該 Dockerfile 文件內容如下: 

  1. FROM --platform=$TARGETPLATFORM alpine:latest AS builder  
  2. WORKDIR /root  
  3. RUN apk add --no-cache git make build-base && \  
  4.     git clone --branch master --single-branch https://github.com/Wind4/vlmcsd.git && \  
  5.     cd vlmcsd/ && \  
  6.     make  
  7. FROM --platform=$TARGETPLATFORM alpine:latest  
  8. LABEL maintainer="Teddysun <i@teddysun.com>"   
  9. COPY --from=builder /root/vlmcsd/bin/vlmcsd /usr/bin/vlmcsd  
  10. EXPOSE 1688  
  11. CMD [ "vlmcsd", "-D", "-e" ] 

$TARGETPLATFORM 是內置變量,由 --platform 參數來指定其值。

由于是基于 alpine 的鏡像來制作的,而 alpine 是支持以下 7 種系統架構的,因此我們制作的鏡像也就跟著支持這 7 種系統架構。

  1. linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/386, linux/ppc64le, linux/s390x 

更友好一點的架構名稱如下: 

  1. amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x 

這里穿插一句吐槽。簡單統計了一下,ARM 的系統架構有如下各種簡稱: 

  1. arm64, armv8l, arm64v8, aarch64  
  2. arm, arm32, arm32v7, armv7, armv7l, armhf  
  3. arm32v6, armv6, armv6l, arm32v5, armv5,  armv5l, armel, aarch32 

看完了是不是很想打人?

而對比 Intel 和 AMD 的就簡單多了: 

  1. x86, 386, i386, i686  
  2. x86_64, x64, amd64 

4. 構建鏡像

先來本地構建一個。

git clone 剛才的示例 Dockerfile 文件,并進入其目錄下: 

  1. $ cd ~ && git clone https://github.com/teddysun/across.git && cd across/docker/kms/ 

在本地構建支持 7 種 Platform 的鏡像 

  1. $ docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,linux/386 -t teddysun/kms -o type=local,dest=.docker -f ./Dockerfile.architecture . 

docker buildx build 的具體參數含義,參考下面的官方文檔:

https://docs.docker.com/engine/reference/commandline/buildx_build/

做完上面的那一步,實際上是把構建好的鏡像放在了本地路徑下。

此時我們再來查看一下已有的 builder 實例。 

  1. $ docker buildx ls  
  2. NAME/NODE    DRIVER/ENDPOINT             STATUS  PLATFORMS  
  3. mybuilder *  docker-container                     
  4.   mybuilder0 unix:///var/run/docker.sock running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6 
  5.  default      docker                              
  6.    default    default                     running linux/amd64, linux/386 

 你會發現 mybuilder 下存在 8 種支持的架構(riscv64 目前還用不上,但是已經支持)。

此時查看一下 docker image 的運行情況,會發現存在一個名為 buildx_buildkit_mybuilder0 的容器在運行。

這是剛才在本地構建時,自動創建的,切記不要將其停止,也不要刪除。 

  1. $ docker ps -as  
  2. CONTAINER ID        IMAGE                           COMMAND           CREATED             STATUS              PORTS             NAMES                        SIZE 
  3. be753fa16090        moby/buildkit:buildx-stable-1   "buildkitd"       15 minutes ago      Up 15 minutes                         buildx_buildkit_mybuilder0   0B (virtual 78.6MB) 

 再來構建一個多系統架構鏡像,并將構建好的鏡像推送到 Docker 倉庫(也就是 hub.docker.com)。

在此操作之前,你需要事先注冊一個賬號(演示過程省略),并登錄。登錄命令如下:

  1. $ docker login 

輸入你的用戶名和密碼即可登錄。

注意,以下演示的命令中 tag 的前面是我的用戶名 teddysun,如果你想制作自己的鏡像,請自行替換為你自己的用戶名。

使用 --push 參數構建好的鏡像推送到 Docker 倉庫。

此時仍然是在剛才的 ~/across/docker/kms 目錄下,文件 Dockerfile.architecture 是為多系統架構構建準備的。命令如下: 

  1. $ docker buildx build --platform linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x -t teddysun/kms --push -f ./Dockerfile.architecture . 

命令執行成功后,你就會在 Docker Hub 看到你上傳的鏡像啦。示例圖如下:

5. 寫在最后

在制作多系統架構的 Docker 鏡像時,建議使用 CPU 比較強或者多核心的 vps 來構建,否則會非常耗時。 

 

責任編輯:龐桂玉 來源: 奇妙的Linux世界
相關推薦

2021-08-23 08:30:30

Docker BuildKit 架構

2021-09-29 08:52:31

Ventoy 開源工具U盤

2025-09-26 02:55:00

Redis系統緩存架構

2017-03-24 09:24:21

HarborDocker鏡像倉庫

2024-02-20 08:08:43

2009-12-25 11:04:31

Fedora DNS

2017-11-13 17:17:11

Docker鏡像Go

2020-11-12 07:51:05

DockerSpring Boot應用

2022-09-06 10:39:38

Docker鏡像構建

2010-01-11 17:08:49

Fedora 10安裝

2023-12-04 16:18:30

2024-05-06 08:07:01

Spring項目Java

2020-10-30 10:49:37

DockerGPULinux

2023-07-03 08:52:31

容器Golang

2022-07-15 14:54:00

DockerLinux技巧

2021-12-07 06:02:15

Redis Docker運維

2025-01-26 16:57:02

2021-02-23 15:05:55

Docker鏡像開發

2011-07-25 18:03:12

組策略

2018-01-09 20:22:49

容器Docker桌面系統
點贊
收藏

51CTO技術棧公眾號

久久精品午夜一区二区福利| 中文字幕国产亚洲2019| 免费看国产曰批40分钟| 偷拍自拍在线视频| 日日噜噜夜夜狠狠视频欧美人| 亚洲欧美一区二区三区四区| 欧美在线aaa| 欧美1234区| 成a人片国产精品| 国产精品久久二区| 国产精品成人无码免费| 精品入口麻豆88视频| 亚洲成人一二三| 一区二区高清视频| 同心难改在线观看| 黄色精品一二区| 欧美一级淫片丝袜脚交| 婷婷激情四射网| 欧美日韩一区二区三区四区不卡 | 成人av电影天堂| 亚洲伦理一区二区三区| 亚洲精品国产setv| 日韩一级欧美一级| 国产自偷自偷免费一区| 精灵使的剑舞无删减版在线观看| 国产人成亚洲第一网站在线播放| 成人欧美一区二区三区在线观看 | 精品日韩在线一区| 手机av在线网| 激情亚洲影院在线观看| 午夜一区二区三区视频| 糖心vlog在线免费观看| 成年人免费在线视频| 99久久精品国产网站| 91视频免费进入| 国产乱子伦精品无码码专区| 日本不卡视频在线观看| 欧美亚洲另类激情另类| www.youjizz.com亚洲| 五月天久久777| 色妞在线综合亚洲欧美| avhd101老司机| 国产亚洲一区| 亚洲欧美日韩网| 美女又爽又黄视频毛茸茸| **爰片久久毛片| 欧美变态口味重另类| 午夜影院免费观看视频| av一级久久| 欧美高清视频不卡网| 成人免费在线观看视频网站| 欧洲av一区二区| 色狠狠桃花综合| 草草草在线视频| 亚洲第一会所001| 欧美性猛片aaaaaaa做受| 中文字幕乱码人妻综合二区三区| 亚洲三级欧美| 欧美性猛交xxxx黑人| 日本精品一区二区三区四区| 成人av观看| 色婷婷久久久亚洲一区二区三区| 国产精品欧美激情在线观看| 户外露出一区二区三区| 在线观看av一区| jizz欧美性11| 日韩成人在线观看视频| 精品国产凹凸成av人导航| 日本一区二区免费视频| 欧美日韩大片免费观看| 亚洲深夜福利网站| 日韩欧美在线视频播放| 天天射天天综合网| 欧美日韩999| www成人在线| 日韩电影免费在线看| 成人黄色中文字幕| 午夜精品久久久久久久爽 | 国产日韩精品中文字无码| 欧美r级电影| 超碰97人人做人人爱少妇| 久久久久亚洲天堂| 玖玖玖国产精品| 91亚洲精品久久久| 无码国产伦一区二区三区视频 | 亚洲精品一区| 91 com成人网| 男男做爰猛烈叫床爽爽小说| 精品久久久久久久| 久久91精品国产91久久久| 国产成人无码精品久久久久| 日本不卡视频一二三区| 99国产超薄肉色丝袜交足的后果| 五月天激情开心网| 国产精品国产精品国产专区不蜜| 大荫蒂性生交片| 日韩免费小视频| 精品国产1区二区| 国产精成人品免费观看| 亚洲天堂偷拍| 国产精品女人网站| 国产麻豆91视频| 久久视频一区二区| av 日韩 人妻 黑人 综合 无码| 一区二区乱码| 7777精品伊人久久久大香线蕉| 国产二级一片内射视频播放| 91一区二区| 欧美孕妇孕交黑巨大网站| 一区二区三区午夜| 久久久一区二区| 999一区二区三区| 日韩国产91| 日韩av一区二区在线观看| 三上悠亚作品在线观看| 丝袜国产日韩另类美女| 91嫩草视频在线观看| www.在线视频.com| 狠狠躁天天躁日日躁欧美| 中文字幕在线播放一区二区| 欧美伦理在线视频| 久久久久国产视频| 国产精品美女一区| 欧美韩日一区二区三区| 国产黄页在线观看| 91综合久久爱com| 成人444kkkk在线观看| 中文字幕激情视频| 久久精品男人天堂av| 青青草视频在线免费播放| 视频二区欧美| 不卡av在线网站| 国产精品久久777777换脸| 国产欧美一区二区精品仙草咪| 欧美不卡在线播放| 99精品在免费线中文字幕网站一区| 日韩亚洲精品视频| 在线观看视频中文字幕| 国产日产欧美一区| 黄色片在线免费| 精品免费视频| 国产成人a亚洲精品| 日韩欧美亚洲系列| 日韩欧美亚洲综合| 日韩人妻无码一区二区三区| 国产精品毛片| 欧美成人蜜桃| 奇米777日韩| 亚洲色图15p| 国产精品成人无码| 国产精品久久一级| 亚洲天堂国产视频| 欧美黄色一区| 官网99热精品| 九色porny丨国产首页在线| 亚洲国产精品久久91精品| 日韩污视频在线观看| 99国产精品99久久久久久| 国产黄视频在线| 国产传媒欧美日韩成人精品大片| 日本精品一区二区三区在线播放视频| 青青草av免费在线观看| 色狠狠av一区二区三区| 美女av免费看| 国产资源在线一区| 男人天堂a在线| 爽爽窝窝午夜精品一区二区| 国产999精品久久久影片官网| 韩国福利在线| 91精品中文字幕一区二区三区| 三级影片在线看| 成人av在线资源| 精品久久久久久久免费人妻| 欧美国产美女| 国产精品免费一区二区三区观看| 麻豆mv在线观看| 一区二区三区国产视频| 国产青青草视频| 香蕉av福利精品导航| 亚洲国产av一区| 韩国一区二区在线观看| 奇米影视亚洲色图| 欧美日韩一二| wwwxx欧美| 欧美色网在线| 欧美高清在线播放| 韩日视频在线| 欧美岛国在线观看| 中文字幕免费观看| 亚洲乱码日产精品bd| 久久久久久久久免费看无码| 久久成人麻豆午夜电影| 狠狠干 狠狠操| 97欧美在线视频| 久久99精品国产99久久| 国产精品日本一区二区不卡视频 | 国产美女激情视频| 亚洲欧美激情在线| 香蕉网在线播放| 精品一二三四区| 无码人妻丰满熟妇区毛片| 欧美黄在线观看| 日韩欧美视频一区二区三区四区| 91成人在线精品视频| 国产精选久久久久久| 美女av在线免费看| 久久天天躁狠狠躁老女人| 男人久久精品| 亚洲成人精品av| 国产麻豆91视频| 欧美亚洲免费在线一区| 色网站在线播放| 一区二区三区四区在线播放| 东京热无码av男人的天堂| 99久久久精品免费观看国产蜜| 国产又粗又长又爽又黄的视频| 久久久人人人| 欧美激情视频免费看| 欧美一区二区三区久久精品茉莉花 | 一道本在线视频| 色综合久久久久综合| 国产精品999久久久| 亚洲三级视频在线观看| 日本午夜精品视频| 国产欧美日产一区| 国产精品扒开腿做爽爽| www.色精品| 国产女主播在线播放| 国产盗摄一区二区三区| 91热视频在线观看| 美女视频一区二区| 能看的毛片网站| 天堂一区二区在线免费观看| 国产精品宾馆在线精品酒店| 欧美精品91| 日本高清视频免费在线观看| 91精品国产自产拍在线观看蜜| 色999五月色| av永久不卡| 日韩精品国内| 欧美色爱综合| 亚洲二区三区四区| 日韩高清欧美| 亚洲一区二区不卡视频| 日韩国产专区| 亚洲欧洲日韩精品| 欧美a级成人淫片免费看| 中国成人在线视频| 忘忧草精品久久久久久久高清| 一道精品一区二区三区| 91精品一区二区三区综合| 99精品一级欧美片免费播放| 久久久久美女| 日韩久久久久久久久久久久| 激情视频一区二区三区| 日日摸日日碰夜夜爽无码| 久久精品1区| xx欧美撒尿嘘撒尿xx| 久久99精品一区二区三区三区| 天天色天天综合网| 国产精品亚洲第一区在线暖暖韩国| japan高清日本乱xxxxx| 成人18精品视频| 成人免费av片| 欧美激情在线看| 午夜激情福利网| 午夜精品久久久| 国产成人a v| 91精品国产一区二区| 蜜桃在线一区二区| 亚洲人成自拍网站| 日本中文在线| 欧美激情亚洲综合一区| 中文一区一区三区高中清不卡免费| 国产精品第8页| 国产一区二区| 久久久精品国产一区二区三区| 精品久久一区| 国产免费一区二区三区四在线播放 | heyzo一本久久综合| 69精品无码成人久久久久久| 亚洲欧美韩国综合色| 91在线看视频| 欧美美女黄视频| 视频污在线观看| 尤物yw午夜国产精品视频明星| 超碰公开在线| 热门国产精品亚洲第一区在线| 日韩欧美专区| 久久久一本精品99久久精品66| 日韩久久综合| 久久成人免费观看| 国内不卡的二区三区中文字幕| 人妖粗暴刺激videos呻吟| 中文字幕巨乱亚洲| 日韩精品一区二区av| 欧美日韩大陆一区二区| 天堂中文在线官网| 久久久国产成人精品| 成人免费短视频| 国产成人av一区二区三区| 精品国产网站| 久久久999视频| 国产精品18久久久久久久久久久久| 91成年人网站| 亚洲h精品动漫在线观看| 国产精品一区二区三区在线免费观看| 日韩电影大片中文字幕| 最新国产露脸在线观看| 国产精品普通话| 日韩大胆成人| av在线观看地址| 国产综合色产在线精品| 中国女人特级毛片| 色综合久久66| 午夜国产在线观看| 色综合久久久888| **国产精品| 亚洲精品欧洲精品| 首页国产欧美日韩丝袜| 亚洲av网址在线| 亚洲国产欧美在线| www.五月婷| 久久久精品在线| 人人精品久久| 亚洲免费精品视频| 免费看日韩精品| 精品成人无码一区二区三区| 黑人巨大精品欧美一区二区一视频 | 欧美精品久久久久性色| 9191国产精品| 九色porny在线| 成人写真视频福利网| 成人精品中文字幕| 国产精品视频分类| 国产精品天干天干在观线| 中文字幕av网站| 最近2019中文免费高清视频观看www99| 亚洲va中文在线播放免费| 麻豆成人小视频| 欧美亚洲自偷自偷| 蜜桃精品一区二区| 色婷婷av一区二区| 电影av在线| 国产乱人伦真实精品视频| 日韩一区电影| 在线观看免费不卡av| 综合精品久久久| 国产高中女学生第一次| 欧美日韩国产成人在线| jizz性欧美23| 69堂免费视频| 国产午夜精品理论片a级大结局 | 精品视频久久久久久| a一区二区三区| 日韩久久精品一区二区三区| 蜜桃视频在线一区| 天天看天天摸天天操| 精品少妇一区二区三区在线视频| 暧暧视频在线免费观看| 精品伦精品一区二区三区视频| 青青草免费在线视频观看| 成人一区二区三区在线观看| 日本道在线观看| 亚洲香蕉在线观看| 日本一区二区中文字幕| 日韩一级免费看| 久久网这里都是精品| 中文字幕一区二区人妻| 欧美插天视频在线播放| 国内自拍欧美| 欧美日韩怡红院| 亚洲猫色日本管| 十九岁完整版在线观看好看云免费| 国产精品流白浆视频| 午夜精品久久99蜜桃的功能介绍| 波多野结衣视频播放| 欧美三日本三级三级在线播放| 国产丝袜在线| 久久综合久久综合这里只有精品| 蜜芽一区二区三区| 免费在线一区二区三区| 亚洲欧美日韩天堂| 日韩在线网址| 国产精品无码一本二本三本色| 中文字幕佐山爱一区二区免费| 三级在线观看网站| 国产日韩欧美一二三区| 亚洲日本欧美| 老司机精品免费视频| 亚洲电影av在线| 免费视频观看成人| 国产精品一区二区免费在线观看| 国产精品青草久久| 天天操天天干天天插| 成人精品视频99在线观看免费 | 国产在线小视频| 成人永久免费| 蜜桃一区二区三区在线| 五月婷婷激情网|