日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Docker是一個開源的容器化平臺,它可以讓開發者打包應用程序及其依賴項到一個容器中,并在任何地方運行這個容器,而不用擔心環境配置的問題。類比一下,就好像打包一個包裹,里面包含了應用程序和它需要的各種工具、庫等等,這個包裹可以在不同的地方被運輸和打開,而不需要在每個地方重新裝一遍工具和庫。這樣,Docker可以使我們的應用程序更加容易部署、更加可移植,并且可以提高開發效率。

而DockerHub則是一個公共官方的包裹存儲庫,也是我們使用docker pull命令時默認的下載倉庫。在這個存儲庫中,有官方或個人所上傳的不同版本,不同架構的鏡像。本次我們介紹的則是,如何在DockerHub網站下載官方arm架構的鏡像。

圖片

如何使用Dokcer Hub?

以ubuntu鏡像為例,當我們登錄hub.docker.com后在搜索框內輸入ubuntu。之后便會出來很多以

“鏡像名字”/”作者或鏡像內容”:”版本”(也許會有版本)

為標題的鏡像。當然這只是個命名的方式,也有很多不同于這個格式的鏡像。此時第一個標有OFFICIAL(官方)的鏡像往往也是我們想找的,因為官方鏡像有足夠詳細的文檔、支持不同的版本與架構,可以滿足大多數要求。其中當然也不乏有第三方作者制作精良的鏡像,它們往往省心省力。

回到正題,進入到ubuntu官方鏡像的詳情頁。我們可以看到映入眼簾的則是他的介紹、版本等。在左上角則是官方提供的下載命令(此命令未指定版本等信息)。

點擊Tags選項卡,可以看到這是ubuntu鏡像發布過的版本信息。可以進行篩選及搜索。latest標簽則為最新版本的鏡像,我們也可以看到有多個它所支持的OS(系統)/ARCH(架構)。右側則有下載此版本鏡像的命令,以及鏡像的大小。而左側則有每個鏡像摘要值,這個值是唯一的。

如何在X86_64架構的主機上下載arm架構鏡像?

計算機的CPU有不同的品牌如intel、amd等這些耳熟能詳的。它們基本的架構都為X86,這個架構早期有intel制定,后續由amd進行擴展為當今主流的X86_64又名amd64。主流并非唯一,業界一直存在多種 CPU 架構,如arm架構。許多手機的CPU也都是arm64架構以及大名鼎鼎得mac的M1、M2均是arm64架構。linux很早就開始支持arm64架構,其社區名為aarch64。在如今我們的科技被美國制裁。華為自研arm架構的手機及服務器芯片也均已停產,國家要邁向全國產的道路。而當下國產CPU多半使用的均為arm架構,甚至當下都無法獲得armv8/v9版本的授權,但是arm架構還是會慢慢的走進大家的視野內的。

前面扯得有點遠,所以我們該如何從X86_64架構的主機上下載arm架構的鏡像呢?說到這就不得不提鏡像是怎么區分CPU架構的了。

鏡像命名區分CPU架構

CPU 構架 “規范” 名稱

我們可以看到早期或者現在,也有不同架構的鏡像添加 CPU 架構名作為鏡像命名空間前綴。這樣就可以用不同的名字下載不同架構的鏡像了。

docker pull amd64/ubuntu:20.04docker pull arm64v8/ubuntu:20.04

# 其實現在你也能pull到。

這個方法所帶來的問題則很多,如CPU 構架 “規范” 名稱該怎么命名?為什么x86_64不命名為amd64?arm64不命名為aarch64?

使用 Tag 后綴區分構架

解決方法則是使用 Tag 后綴區分構架,變通辦法是不使用命名空間前綴,改為使用鏡像名或 Tag 前綴或后綴區分。如:

docker pull ubuntu:20.04-x86_64docker pull ubuntu:20.04-aarch64

在此情況下,我們可以直接使用docker pull 鏡像名:版本@摘要值 的方式進行下載指定的鏡像。

如我們要下載armv7版本的ubuntu鏡像,可以直接點擊左側的摘要值進入鏡像的詳細頁面。

在鏡像名稱下方則是我需要的摘要值,它是此鏡像的唯一值。再下面我們可以選擇不同的版本進行查看。左下方的則是構建此鏡像的層,Dockerfile構建過程。而右下方則顯示了鏡像中包含的軟件包,軟件是否安全,是否有漏洞等。

現在可以使用當前命令進行下載指定版本的鏡像。

docker pull ubuntu:latest@sha256:ad18cfdb19dac67bf0072dacea661a817330e5c955d081f4d09914e743ae5d4a

使用此命令查看鏡像支持的架構。docker inspect ubuntu:latest@sha256:ad18cfdb19dac67bf0072dacea661a817330e5c955d081f4d09914e743ae5d4a# ---"Architecture": "arm", "Variant": "v7", "Os": "linux", "Size": 55339361, "VirtualSize": 55339361,

清單列表(Manifest List) 支持多構架鏡像,進行拉取arm架構鏡像

容器社區提出了使用統一的鏡像名支持多種 CPU 構架的方案。2017-09-12 后, docker 使用清單列表 (Manifest List) 功能實現了這一方案。當有了這一功能,我們可以基于一個鏡像命名空間。當使用docker pull 進行拉取鏡像時,docker會根據當前CPU架構拉取對應的鏡像。

docker pull ubuntu:20.04

當我們需要跨CPU架構拉取鏡像時,如我是一個X86主機,想要拉取一個arm架構的鏡像,除了剛才提到的方法。docker為我們提供了pull命令中的--platform參數,此參數可以明確指定我們需要的鏡像。platform 不僅可指定 CPU 構架信息,還可以指定操作系統信息。

前面提到,鏡像可以通過鏡像命名空間中加入架構名稱來區分鏡像的架構。但帶來的問題則是,不同的人可能命名規范并不相同,難以統一?,F在使用清單列表的鏡像在向docker鏡像中心進行注冊時必須按照其規范進行命名。但 platform 參數使用任意一個慣用名均可。如其注冊名為arm/v7 ,而在使用platfrom參數時,指定為arm即可。

多架構與單架構拉取的鏡像為同一個。

# 拉取 amd64 命名空間下的單架構鏡像

docker image pull amd64/ubuntu:20.04

# 拉取多架構鏡像在 x86_64 構架下的鏡像

docker image pull --platform x86_64 ubuntu:20.04

創建多構架鏡像

docker 使用清單列表 (Manifest List) 支持多構架鏡像。

什么是清單?

將一個 docker 鏡像推送到鏡像注冊中心后,鏡像注冊中心會記錄鏡像的存儲信息,稱為鏡像清單 (Image Manifest) 。而清單列表則記錄了多個鏡像清單及其對應的平臺 platform 信息。所謂多構架鏡像,或多平臺鏡像,就是清單列表及其關聯的多個單構架鏡像。

創建多構架 (多平臺) 鏡像的操作步驟為:

創建多個單構架鏡像。

將所有鏡像推送到鏡像注冊中心,自動生成鏡像清單。

匯總多個鏡像清單得到清單列表,同樣將清單列表推送 (存儲) 到鏡像注冊中心上。新版本 docker 可使用 docker manifest 命令創建和推送清單列表。

Linux 支持交叉構建,即在一套環境下構建多種 CPU 構架下的鏡像。為了簡單起見,暫不討論這種方案,暫采用在多個構架環境下創建各自的原生鏡像的辦法。

這里以創建多架構鏡像 test/ubuntu:20.04 為例,介紹創建 docker 多構架鏡像的實踐操作步驟。

基于官方多架構鏡像 ubuntu:20.04 編寫 Dockerfile 。

在 x86_64 機器上構建原生鏡像,推送到鏡像注冊中心。docker build --pull 表示每次構建前自動拉取最新的基礎鏡像,基礎鏡像是多架構鏡像 (清單列表) 時,自動更新到當前架構的最新鏡像。

docker build --pull -t test/ubuntu:20.04-x86_64 .docker push test/ubuntu:20.04-x86_64

同樣,在 arm64 機器上構建原生鏡像,推送到鏡像注冊中心。

docker build --pull -t test/ubuntu:20.04-aarch64 .docker push test/ubuntu:20.04-aarch64

使用推送到鏡像注冊中心的多個鏡像創建清單列表。注意,前面為每個單架構鏡像添加了不同的 Tag 后綴,以方便區分引用。將清單列表推送到鏡像注冊中心,刪除本地副本 (清單列表只有存儲在鏡像注冊中心上才有意義) 。

docker manifest create test/ubuntu:20.04 hanyong/ubuntu:20.04-x86_64 hanyong/ubuntu:20.04-aarch64docker manifest push test/ubuntu:20.04docker manifest rm test/ubuntu:20.04

擴展:

docker pull 鏡像存儲位置在哪?

查看docker鏡像默認存儲位置:

根據 Docker Root Dir: /var/lib/docker顯示/var/lib/docker為默認存儲位置。

docker info#---Kernel Version: 5.4.0-26-generic Operating System: Ubuntu 20.04 LTS OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 7.748GiB Name: weijishu ID: LINI:YJJ3:WDYH:CFFN:5DBN:WM52:B57J:E6IP:VF7D:NLCV:XJR2:GF62 Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/

總結

本文介紹了如何在x86_64架構的主機上下載arm架構的鏡像。鏡像可以通過鏡像命名空間中加入架構名稱來區分鏡像的架構,也可以使用Tag后綴區分構架。此外,docker使用清單列表支持多構架鏡像,可以使用–platform參數指定需要的鏡像。本文還介紹了如何創建多構架鏡像。

分享到:
標簽:Docker
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定