最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker鏡像多架構(gòu)構(gòu)建介紹

 更新時(shí)間:2022年09月15日 11:08:54   作者:小二上酒8  
這篇文章主要介紹了Docker鏡像多架構(gòu)構(gòu)建介紹,文章圍繞主題展開(kāi)詳細(xì)的介紹,具有一點(diǎn)定的參考價(jià)值,感興趣的小伙伴可以參考一下

前言:

目前arm系統(tǒng)越來(lái)越常見(jiàn),對(duì)鏡像的多架構(gòu)需求也越來(lái)越大。對(duì)于同一個(gè)鏡像,最簡(jiǎn)單的辦法就是在amd64或arm機(jī)器上build后通過(guò)不同的tag進(jìn)行區(qū)分,比如 nginx:v1-amd64 、 nginx:v1-arm64 ,但這種方式比較丑陋,而且沒(méi)有對(duì)應(yīng)架構(gòu)的機(jī)器用來(lái)構(gòu)建怎么辦?

目前最新的辦法就是使用buildx來(lái)進(jìn)行構(gòu)建,不過(guò)這個(gè)特性目前默認(rèn)是沒(méi)啟用的,需要在docker的配置文件中添加 "experimental": true 后重啟docker服務(wù)生效。

首先執(zhí)行下面的命令讓amd64的機(jī)器也可以構(gòu)建arm的鏡像:

docker run --rm --privileged tonistiigi/binfmt:latest --install all

然后創(chuàng)建一個(gè)新的build實(shí)例:

docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master

這樣準(zhǔn)備工作就全都做好了。

接下來(lái)以一個(gè)kubebuilder命令創(chuàng)建的operator項(xiàng)目默認(rèn)的Dockerfile為例:

# Build the manager binary
FROM --platform=$TARGETPLATFORM golang:1.16 as builder
ARG TARGETOS TARGETARCH
WORKDIR /workspace
# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum
# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN go mod download

# Copy the go source
COPY main.go main.go
COPY api/ api/
COPY controllers/ controllers/

# Build
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -o manager main.go

# Use distroless as minimal base image to package the manager binary
# Refer to https://github.com/GoogleContainerTools/distroless for more details
FROM --platform=$TARGETPLATFORM gcr.io/distroless/static:nonroot
WORKDIR /
COPY --from=builder /workspace/manager .
USER 65532:65532

ENTRYPOINT ["/manager"]

修改點(diǎn)有2個(gè):

--platform=$TARGETPLATFORM
GOOS=${TARGETOS} GOARCH=${TARGETARCH}

這些TARGET開(kāi)頭的變量可以在參考鏈接2里看到全部含義。

接下來(lái)使用這個(gè)文件進(jìn)行構(gòu)建:

docker buildx build -t hello/namespace/name:v1 -f Dockerfile . --platform linux/amd64,linux/arm64 --push

注意這里的 buildx 、 --platform 參數(shù)后面跟隨需要構(gòu)建的版本、以及 --push ,buildx構(gòu)建的多架構(gòu)鏡像要么使用這個(gè)參數(shù)push到鏡像倉(cāng)庫(kù),要么使用 --load 加載到本地,不可省略。

構(gòu)建完成后就會(huì)生成相應(yīng)的多架構(gòu)鏡像了,可以使用 docker manifest inspect 來(lái)進(jìn)行驗(yàn)證,比如:

docker manifest inspect hello/namespace/name:v1
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 1367,
"digest": "sha256:a7b99854e13939e3beaf21c1da8b4654022018eda9f438155b18ae16eeff49a5",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2169,
"digest": "sha256:844885928813685ffa8c5ea4c6e9e7a09d95ac79e417afae0be7b73086762cfd",
"platform": {
"architecture": "arm64",
"os": "linux"
}
}
]
}

可以看出確實(shí)是生成了多個(gè)架構(gòu)的鏡像,使用時(shí)直接在不同架構(gòu)的機(jī)器上pull就會(huì)自動(dòng)下載對(duì)應(yīng)的架構(gòu)鏡像了?;蛘咭部梢允褂?docker pull --platform arm64|amd64 xxxxx 來(lái)指定拉取鏡像的架構(gòu)。

對(duì)于某些沒(méi)有辦法使用buildx的場(chǎng)景,我們可以手動(dòng)build不同架構(gòu)的鏡像,然后再手動(dòng)創(chuàng)建manifest,比如:

# 指定拉取amd64架構(gòu)
docker pull --platform amd64 gcr.io/distroless/static:nonroot
# 重新打tag
docker tag 9ef34 hello/ns/static:nonroot-amd64
# 推送
docker push hello/ns/static:nonroot-amd64

# 指定拉取arm64架構(gòu)
docker pull --platform arm64 gcr.io/distroless/static:nonroot
# 重新打tag
docker tag 91714 hello/ns/static:nonroot-arm64
# 推送
docker push hello/ns/static:nonroot-arm64

## 制作manifest
docker manifest create hello/ns/static:nonroot hello/ns/static:nonroot-amd64 hello/ns/static:nonroot-arm64
docker manifest push hello/ns/static:nonroot
docker manifest rm hello/ns/static:nonroot

重點(diǎn)是最后3行,push manifest后使用就和第一種方法一樣了。

另外如果想進(jìn)行多架構(gòu)構(gòu)建有幾個(gè)注意點(diǎn):

yum|apt install

其他 查看鏡像倉(cāng)庫(kù)里都有哪些鏡像:

curl -u "用戶名":"密碼" -X GET http://鏡像地址:5000/v2/_catalog?n=2000 | python -m json.tool

查看鏡像有哪些tag:

curl -u "用戶名":"密碼" -X GET http://鏡像地址:5000/v2/命名空間/鏡像名稱/tags/list | python -m json.tool

到此這篇關(guān)于Docker鏡像多架構(gòu)構(gòu)建介紹的文章就介紹到這了,更多相關(guān)Docker鏡像 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 局域網(wǎng)內(nèi)部署 Docker Registry(推薦)

    局域網(wǎng)內(nèi)部署 Docker Registry(推薦)

    本文將從創(chuàng)建單機(jī)的 Docker Registry 開(kāi)始,逐步完成局域網(wǎng)內(nèi)可用的 Docker Registry 的創(chuàng)建,并重點(diǎn)解釋如何使用 IP 地址訪問(wèn) Registry 的方法
    2017-05-05
  • docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式

    docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式

    這篇文章主要介紹了docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Docker-compose詳解和LNMP搭建全過(guò)程

    Docker-compose詳解和LNMP搭建全過(guò)程

    Docker-Compose是Docker的一個(gè)官方開(kāi)源項(xiàng)目,用于快速編排Docker容器集群,它允許用戶在YAML文件中定義多個(gè)服務(wù),每個(gè)服務(wù)可以包含一個(gè)或多個(gè)容器,這些容器可以通過(guò)Dockerfile構(gòu)建或直接運(yùn)行現(xiàn)有鏡像,Docker-Compose支持多種配置選項(xiàng)
    2024-11-11
  • Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解

    Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解

    這篇文章主要介紹了Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Docker安裝及基本使用方法詳細(xì)介紹

    Docker安裝及基本使用方法詳細(xì)介紹

    本篇文章主要介紹了Docker安裝及基本使用方法詳細(xì)介紹,對(duì)于初學(xué)者有一定的參考作用,有需要的可以了解一下。
    2016-11-11
  • dockerDesktop使用教程

    dockerDesktop使用教程

    本文給大家分享docker Desktop使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • docker環(huán)境下安裝jenkins容器的詳細(xì)教程

    docker環(huán)境下安裝jenkins容器的詳細(xì)教程

    這篇文章主要介紹了docker環(huán)境下安裝jenkins容器的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 最新IDEA快速實(shí)現(xiàn)Docker鏡像部署運(yùn)行的過(guò)程詳解

    最新IDEA快速實(shí)現(xiàn)Docker鏡像部署運(yùn)行的過(guò)程詳解

    這篇文章主要介紹了最新IDEA快速實(shí)現(xiàn)Docker鏡像部署運(yùn)行的過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Docker磁盤(pán)空間清理的方法實(shí)現(xiàn)

    Docker磁盤(pán)空間清理的方法實(shí)現(xiàn)

    在使用Docker的過(guò)程中,系統(tǒng)會(huì)逐漸積累一些無(wú)用的垃圾文件,占據(jù)寶貴的磁盤(pán)空間并影響系統(tǒng)性,本文主要介紹了Docker磁盤(pán)空間清理的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • cgroup?blkio子系統(tǒng)對(duì)容器的讀寫(xiě)限速詳解

    cgroup?blkio子系統(tǒng)對(duì)容器的讀寫(xiě)限速詳解

    這篇文章主要為大家介紹了cgroup?blkio子系統(tǒng)對(duì)容器的讀寫(xiě)限速詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論

嘉兴市| 察隅县| 包头市| 通辽市| 府谷县| 普格县| 黄骅市| 永宁县| 平武县| 哈密市| 虎林市| 青川县| 渝北区| 太白县| 甘德县| 大石桥市| 温泉县| 丹凤县| 巴东县| 延津县| 綦江县| 常熟市| 灯塔市| 若羌县| 西林县| 宁都县| 顺义区| 龙山县| 西华县| 额济纳旗| 屏东市| 乐至县| 吕梁市| 福建省| 仪陇县| 新巴尔虎右旗| 宜阳县| 清丰县| 会泽县| 陇川县| 达孜县|