欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:docker 在 X86

柚子快報(bào)激活碼778899分享:docker 在 X86

http://yzkb.51969.com/

在信創(chuàng),ARM開(kāi)始崛起的現(xiàn)在,Docker 也從一開(kāi)始的只支持 x86_64 架構(gòu)變?yōu)橹С指鞣N架構(gòu)了,雖然 Docker 的目的是保證只要 Docker 安裝好,在任意機(jī)器上運(yùn)行都能達(dá)到一樣的效果,但是這個(gè)的前提是Docker鏡像的架構(gòu)和當(dāng)前服務(wù)器的架構(gòu)一致,以前都是 x84_64架構(gòu)自然可以,但現(xiàn)在也有別的架構(gòu),因此 一個(gè)鏡像如果只有 x86_64 架構(gòu)的版本,那么是無(wú)法在 Arm 架構(gòu)的服務(wù)器上運(yùn)行的。

和運(yùn)行同理,打包也是如此,x86_64 的機(jī)器只能打包 x86_64 的鏡像。

但是新版本的 docker (從 server 版本 大于 19.10 開(kāi)始) 有了一個(gè)插件 buildx , 這個(gè)插件支持從一個(gè)平臺(tái)構(gòu)建多個(gè)平臺(tái)的鏡像。

下面是常見(jiàn)的幾種方式

Docker Desktop

此軟件是用于開(kāi)發(fā),測(cè)試使用的,很方便,因?yàn)樾掳姹灸J(rèn)集成了 buildx ,也集成了多平臺(tái)鏡像模擬運(yùn)行。、

我安裝的版本

docker version

輸出結(jié)果

Client:

Cloud integration: v1.0.35+desktop.13

Version: 26.1.1

API version: 1.45

Go version: go1.21.9

Git commit: 4cf5afa

Built: Tue Apr 30 11:46:57 2024

OS/Arch: linux/amd64

Context: default

Server: Docker Desktop

Engine:

Version: 26.1.1

API version: 1.45 (minimum version 1.24)

Go version: go1.21.9

Git commit: ac2de55

Built: Tue Apr 30 11:48:28 2024

OS/Arch: linux/amd64

Experimental: false

containerd:

Version: 1.6.31

GitCommit: e377cd56a71523140ca6ae87e30244719194a521

runc:

Version: 1.1.12

GitCommit: v1.1.12-0-g51d5e94

docker-init:

Version: 0.19.0

GitCommit: de40ad0

buildx 情況

docker buildx ls

輸出

NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS

default* docker

\_ default \_ default running v0.13.2 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64, linux/loong64, linux/ppc64

可以看到,build 支持打包多個(gè)架構(gòu)的鏡像,如打包 linux/arm64的,只需要如下執(zhí)行即可

docker build -t test1 --platform linux/arm64 .

docker build --platform linux/amd64,linux/arm64 .

默認(rèn)情況下,Docker Desktop 支持在仿真下運(yùn)行和構(gòu)建多平臺(tái)鏡像。無(wú)需配置,因?yàn)樯善魇褂美壴?Docker Desktop VM 中的 QEMU。

Docker Server

Docker Desktop 是用于 windows ,mac上開(kāi)發(fā)使用的,實(shí)際使用肯定是在 linux 上的,此時(shí)裝的都是 Docker Server 服務(wù),如 docker-ce ,由于默認(rèn)情況下是不支持多平臺(tái)的,所以需要參考官方文檔:

多平臺(tái) |Docker 文檔 — Multi-platform | Docker Docs(https://docs.docker.com/build/building/multi-platform/)

文檔中介紹了三種方式,分別是 QEMU 模擬仿真,使用具有多個(gè)原生節(jié)點(diǎn)的構(gòu)建器, 將交叉編譯與多階段構(gòu)建結(jié)合使用,下面別分介紹

QEMU

這個(gè)最簡(jiǎn)單,不過(guò)需要滿足一些條件(不一定是所有條件都需要有效,但是開(kāi)著準(zhǔn)沒(méi)錯(cuò))

物理機(jī)環(huán)境變量 DOCKER_BUILDKIT=1,應(yīng)該會(huì)有用物理機(jī)環(huán)境變量 DOCKER_CLI_EXPERIMENTAL=enabled,應(yīng)該會(huì)有用物理機(jī) Linux 內(nèi)核版本 4.8 或更高版本,即 uname -r 的輸出版本號(hào)大于4.8 ,否則會(huì)存在各種奇奇怪怪的錯(cuò)誤。binfmt-support 版本 2.1.7 或更高版本,Ubuntu 可以通過(guò) apt-cache policy binfmt-support 查看版本QEMU 二進(jìn)制文件必須靜態(tài)編譯并使用 fix_binary 標(biāo)志進(jìn)行注冊(cè)

一般情況下,你只要內(nèi)核版本滿足,binfmt-support 啥的也能滿足

QEMU 安裝

官網(wǎng)推薦是通過(guò)鏡像 tonistiigi/binfmt 來(lái)操作,常用操作命令如下:

# 查看支持的架構(gòu)和模擬器列表

docker run --privileged --rm tonistiigi/binfmt:master

# 安裝所有架構(gòu)模擬器

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

# 安裝指定架構(gòu)的

docker run --privileged --rm tonistiigi/binfmt:master --install arm64,riscv64,arm

# 刪除所有架構(gòu)

docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-*

# 刪除指定架構(gòu)

docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-aarch64

# 查看版本

docker run --privileged --rm tonistiigi/binfmt:master --version

# 查看幫助

docker run --privileged --rm tonistiigi/binfmt:master --help

驗(yàn)證命令

docker run --rm arm32v6/alpine:3.20.3 uname -a

docker run --rm arm32v7/alpine:3.20.3 uname -a

docker run --rm arm64v8/alpine:3.20.3 uname -a

docker run --rm s390x/alpine:3.20.3 uname -a

docker run --rm i386/alpine:3.20.3 uname -a

docker run --rm ppc64le/alpine:3.20.3 uname -a

docker run --rm riscv64/alpine:3.20.3 uname -a

docker run --rm amd64/alpine:3.20.3 uname -a

docker run --rm alpine:3.20.3 uname -a

查看安裝好的注冊(cè)節(jié)點(diǎn)

ls -alh /proc/sys/fs/binfmt_misc

輸出:

drwxr-xr-x 2 root root 0 Sep 24 13:46 .

dr-xr-xr-x 1 root root 0 Sep 24 13:46 ..

-rw-r--r-- 1 root root 0 Sep 24 13:46 WSLInterop

-rw-r--r-- 1 root root 0 Sep 24 13:46 WSLInterop-late

-rw-r--r-- 1 root root 0 Sep 24 13:46 aarch64

-rw-r--r-- 1 root root 0 Sep 24 13:46 arm

-rw-r--r-- 1 root root 0 Sep 24 13:46 mips64

-rw-r--r-- 1 root root 0 Sep 24 13:46 mips64le

-rw-r--r-- 1 root root 0 Sep 24 13:46 ppc64le

-rw-r--r-- 1 root root 0 Sep 25 23:10 qemu-loongarch64

-rw-r--r-- 1 root root 0 Sep 25 23:10 qemu-s390x

--w------- 1 root root 0 Sep 25 23:07 register

-rw-r--r-- 1 root root 0 Sep 24 13:46 riscv64

-rw-r--r-- 1 root root 0 Sep 24 13:46 status

如果上面的都不行,那么可能就是存在一些特殊情況了,可以使用 tonistiigi/binfmt 類似的 multiarch/qemu-user-static , 這個(gè)也很牛皮,可以在早期的docker 版本上實(shí)現(xiàn)跨平臺(tái)打包鏡像,如 docker 19.10 左右的版本,但是需要自己去深入研究一下。

使用命令如下:

$ uname -m

x86_64

$ docker run --rm -t arm64v8/ubuntu uname -m

standard_init_linux.go:211: exec user process caused "exec format error"

$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

$ docker run --rm -t arm64v8/ubuntu uname -m

aarch64

# 查看幫助說(shuō)明

docker run --rm --privileged multiarch/qemu-user-static:latest --help

# 安裝除了當(dāng)前處理器支持的架構(gòu)之外的模擬器

docker run --rm --privileged multiarch/qemu-user-static:latest

# 刪除現(xiàn)有的模擬器,安裝除了當(dāng)前處理器支持的架構(gòu)之外的模擬器

docker run --rm --privileged multiarch/qemu-user-static:latest --reset

# 刪除現(xiàn)有的模擬器,安裝除了當(dāng)前處理器支持的架構(gòu)之外的模擬器,并且持久化

docker run --rm --privileged multiarch/qemu-user-static:latest --reset -p yes

# 查看安裝的模擬器列表

ls -alh /proc/sys/fs/binfmt_misc

使用 QEMU 進(jìn)行仿真可能比原生構(gòu)建慢得多,尤其是對(duì)于編譯和壓縮或解壓縮等計(jì)算密集型任務(wù)。

默認(rèn)情況下,Docker Desktop 支持在仿真下運(yùn)行和構(gòu)建多平臺(tái)鏡像。無(wú)需配置,因?yàn)樯善魇褂美壴?Docker Desktop VM 中的 QEMU。

多個(gè)原生節(jié)點(diǎn)

需要額外的機(jī)器,即有對(duì)應(yīng)的不同平臺(tái)的機(jī)器集群打包,不考慮,我有額外的機(jī)器了,就不用糾結(jié)這個(gè)了

交叉編譯

根據(jù)您的項(xiàng)目,如果您使用的編程語(yǔ)言對(duì)交叉編譯有很好的支持,則可以利用多階段構(gòu)建從構(gòu)建器的本機(jī)架構(gòu)為目標(biāo)平臺(tái)構(gòu)建二進(jìn)制文件。特殊的構(gòu)建參數(shù)(如 BUILDPLATFORM 和 TARGETPLATFORM)會(huì)自動(dòng)在 Dockerfile 中使用。

# syntax=docker/dockerfile:1

FROM --platform=$BUILDPLATFORM golang:alpine AS build

ARG TARGETPLATFORM

ARG BUILDPLATFORM

RUN echo "I am running on $BUILDPLATFORM, building for $TARGETPLATFORM" > /log

FROM alpine

COPY --from=build /log /log

Docker in Docker

很多情況都是因?yàn)閐ocker所處的內(nèi)核版本等等不足導(dǎo)致,那么就可以嘗試使用 Docker in Docker ,套娃的方式打包。性能會(huì)低一點(diǎn),至少可以打包,還沒(méi)那么多問(wèn)題

GitHub - crazy-max/docker-docker: Docker in Docker (DinD) image(https://github.com/crazy-max/docker-docker#about)

參考鏈接

“sh: write error: Invalid argument” errors when register · Issue #38 · multiarch/qemu-user-static · GitHub(https://github.com/multiarch/qemu-user-static/issues/38)sh: write error: Invalid argument - Centos 7 · Issue #100 · multiarch/qemu-user-static · GitHub(https://github.com/multiarch/qemu-user-static/issues/100)failed to load LLB: runtime execution on platform linux/arm64 not supported · Issue #138 · docker/buildx · GitHub(https://github.com/docker/buildx/issues/138)buildx is not a docker command on linux/amd64 ? · Issue #132 · docker/buildx · GitHub(https://github.com/docker/buildx/issues/132#issuecomment-521759117)GitHub - crazy-max/docker-docker: Docker in Docker (DinD) image(https://github.com/crazy-max/docker-docker#about)sh: write error: Invalid argument - Centos 7 qemu報(bào)錯(cuò)解決方案 - 小小記錄本 - 博客園(https://www.cnblogs.com/xiaojiluben/p/16745276.html)多架構(gòu) Docker 鏡像 ·Maartje Eyskens — Multiarch Docker Images · Maartje Eyskens(https://eyskens.me/multiarch-docker-images/)

柚子快報(bào)激活碼778899分享:docker 在 X86

http://yzkb.51969.com/

文章來(lái)源

評(píng)論可見(jiàn),查看隱藏內(nèi)容
大家都在看:

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19544022.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄