docker(四)使用篇一:docker 鏡像倉庫

前文我們已經介紹了 docker 并安裝了 docker,下面我們將正式步入使用環節,本章是第一個使用教學:docker 鏡像倉庫

一、什么是鏡像倉庫

所謂鏡像倉庫,其實就是負責存儲、管理和分發鏡像的倉庫,并且建立了倉庫的索引,提供了登錄認證能力。

鏡像倉庫可以看做一個大倉庫,其內部又管理多個小鏡像倉庫(Repository),這些小鏡像倉庫通過命名來區分。

每個 Repository 包含一個或多個鏡像,鏡像之間則通過鏡像名稱和標簽 (Tag)來區分。

鏡像倉庫整體視圖

大鏡像倉庫(Registry)

鏡像倉庫可以看做一個大倉庫,要從哪一個鏡像倉庫拉取鏡像,通常通過 DNS 或 IP 地址來確定一個鏡像倉庫(如hub.docker.com)。一個 Registry 中可以存在多個 Repository。

小鏡像倉庫(Repository)?

由某特定的 docker 鏡像的所有迭代版本組成的鏡像倉庫;又可分為“頂層倉庫用戶倉庫”,用戶倉庫名稱格式為“用戶名 /?倉庫名”。
每個倉庫可以包含多個 Tag(標簽),每個標簽對應一個鏡像。(鏡像名稱(name)+標簽(tag):如 nginx:latest)

認證能力:

提供用戶注冊,登錄、登出鏡像倉庫的能力。

索引:

提供鏡像的索引信息,方便檢索。

一個容器鏡像實際包含了兩個部分:

一個是元數據(存儲鏡像信息的數據),其實就是由 dockerfile 構建出來的描述文件,這個描述文件會說這個容器鏡像有多少層,每一層里面有什么內容,它的 checksum 這些信息都會記錄下來,還有最終的可執行文件在哪,都是在這個元數據里面。

還有一個是 blob 文件,它真正保存了數據,也真正占用空間。

二、鏡像倉庫的分類

1、以是否對外開放劃分種類(研發人員常用):

1)公有倉庫:像阿里云、docker hub 等放到公有網絡上的鏡像倉庫,不用登錄就可以下載鏡像,供大家訪問使用。

2)私有倉庫:不對外開放,往往位于私有網絡,只有公司內部人員可以使用。

2、按供應商和面向群體劃分種類

(1)sponsor(贊助) registry:第三方的 registry,供客戶和 docker 社區版使用。

(2)mirror(鏡像) registry:第三方的 registry,只讓客戶使用,例如阿里云必須注冊才能使用。

(3)vendor(供應商) registry:由發布 docker 鏡像的供應商提供的 registry,例如像 Google 和 Redhat 提供了鏡像倉庫服務。

(4)private registry:通過沒有防火墻和額外的安全層的私有實體提供的 registry,僅供內部使用。

三、鏡像倉庫的工作機制

1、鏡像倉庫的使用流程

(1)通過 docker login 登錄倉庫

(2)Docker pull 拉取需要的鏡像

(3)通過 dockerfile 或者 commit 等方式制作完鏡像再通過 docker push 上傳到倉庫

2、在實際研發中鏡像倉庫如何使用

Docker Registry 中的鏡像通常由開發人員制作,而后推送至公共私有”Registry 上保存,供其他人員使用,例如“部署到生產環境。

實際工作中的 docker 使用流程圖

開發環境:開發人員使用的一套環境

測試環境:需求開發完成后,發布到供測試人員進行測試的環境

預發布環境:版本測試完成后,發布到和生產類似的環境,提前模擬生產發布

生產環境:真正面向客戶的環境

3、鏡像倉庫的拉取機制

啟動容器時,docker daemon 會試圖從本地獲取相關的鏡像;本地鏡像不存在時,其會從 Registry 中下載該鏡像并保存到本地。

四、常見的鏡像倉庫

1、docker hub(已被封禁,可以拉取公有鏡像,但無法登陸私有倉庫)

注意:截止至文章發布,因某些原因,docker hub 在國內已經被封禁,無法通過國內網絡訪問,僅可以拉取公有鏡像!

Docker Hub Docker 提供的托管存儲庫服務,用于查找容器映像并與團隊共享。

具有以下功能:

1)個人可以注冊私有倉庫,能夠發布自己的鏡像

2)提供鏡像檢索能力

3)提供海量官方和認證組織的鏡像

4)從 GitHub Bitbucket 自動構建容器鏡像并將它們推送到 Docker Hub

5)支持 webhook(webhook 是一種基于 HTTP 的回調函數,發生指定的事件時,服務器會自動將相關的有效負載發送到客戶端的 webhook URL)

docker hub 的功能瀏覽

1、搜索鏡像

?2、鏡像 tag 查找

3、對應版本拉取命令

4、鏡像的大小,idcpu 架構查看

2、國內公有鏡像倉庫

由于 docker hub 已經被封禁,通過正常渠道,我們只能訪問國內各大云服務商提供的鏡像倉庫,如騰訊、阿里、華為等,筆者由于云服務器是華為云的,因此這里給出華為云鏡像倉庫的鏈接以及如何創建私有的鏡像倉庫:

華為開源鏡像倉庫

Docker華為云創建私人鏡像倉庫

3私有倉庫

私有鏡像倉庫則是指部署在公司或組織內部的,用于自身應用 Docker 鏡像存儲、分發的鏡像倉庫。

在構建公司內部使用的自動化發布系統的過程中,從安全的角度出發,應用的打包鏡像一般情況下只會被存儲在私有鏡像倉庫中,CI / CD 流程的銜接點也是通過向私有鏡像倉庫上傳鏡像和拉取鏡像的操作來完成的。

常見的私有倉庫工具:

Harbor:Harbor:?

VMware 公司最近開源的企業級 Docker Registry 項目, 其目標是幫助用戶迅速搭建一個企業級的 Docker registry 服務。它以 Docker 公司開源的registry 為基礎,提供了管理 UI, 基于角色的訪問控制(Role Based Access Control),AD/LDAP 集成、以及審計日志(Audit logging) 等企業用戶需求的功能,同時還原生支持中文。Harbor 的每個組件都是以 Docker 容器的形式構建的,使用 Docker Compose 來對它進行部署。

Nexus:

Nexus Sonatype 公司發布的一款倉庫(Repository)管理軟件,目前常被用來作為 Maven 私服、Docker 私服。

Docker registry:

docker 官方提供的私服,類似于 docker hub。用于保存公司內部上傳的 Docker 鏡像。

五、核心:鏡像倉庫相關命令

命令清單

命令別名功能備注
docker login登錄倉庫(在拉取私人鏡像 / 向個人倉庫推送鏡像時,需要使用)必須掌握
docker logout登出倉庫
docker pulldocker image pull從倉庫拉取鏡像(拉取公有鏡像不需要登錄)必須掌握
docker pushdocker image push向倉庫推送鏡像必須掌握
docker search查找鏡像倉庫中某個鏡像(一般直接在網頁查詢了,用的較少)

1、docker login

# 注意:[]表示可選項,可有可無,后面都是如此,這里特別說明,后面不再贅述
docker login [核心參數] [鏡像倉庫地址]

核心參數:

-u(鏡像倉庫的用戶名)

-p(鏡像倉庫的密碼,建議不要在命令行中輸入,會被看見

功能登陸到一個 Docker 鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub。?

通過華為云容器鏡像服務給的登錄指令,成功登錄筆者自己的倉庫

2、docker pull

# 此處的 TAG 指的是鏡像標簽;DIGEST則是另一種表示,sha256的值
docker pull [關鍵參數] 鏡像倉庫名[:TAG 或者 @DIGEST]

關鍵參數:

-a:拉取指定倉庫中的某一鏡像的所有不同版本。

--disable-content-trust :忽略鏡像的校驗,默認開啟

功能:從鏡像倉庫中拉取指定鏡像

# 示例:拉取 nginx 1.23.3 版本
docker pull nginx:1.23.3

3、docker push

docker push [關鍵參數] 鏡像名稱[:TAG]

關鍵參數:

-a:推送某一鏡像的所有不同版本。

--disable-content-trust :忽略鏡像的校驗,默認開啟

功能:把本地鏡像上傳至當前登錄的鏡像倉庫

# 示例:向自己的的倉庫推送 myapache v1 版本
docker push myapache:v1

4、docker search

# 因 docker hub 被國內封禁,此命令暫時無法實操
docker search [關鍵參數] 鏡像名稱

關鍵參數

--no-trunc:顯示完整的鏡像描述;

?-f <過濾條件>:列出收藏數不小于指定值的鏡像。

功能:查找鏡像倉庫中某個鏡像(一般直接在網頁查詢了,用的較少)

# 從 Docker Hub 查找所有鏡像名包含 nginx,并且 star 數大于 10 的鏡像
docker search -f stars=10 nginx

?5、docker logout

docker logout [鏡像倉庫地址]

功能:登出鏡像倉庫

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80976.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80976.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80976.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單片機開發軟件

目錄 純編碼 vscode Ardunio Keil 1. 集成化開發環境&#xff08;IDE&#xff09; 2. 多架構芯片支持 3. 高效的代碼生成與優化 4. 強大的調試與仿真功能 5. 豐富的庫函數與生態系統 6. 教育與企業級適用性 典型應用場景 半編碼半圖形化 STM32CUBEIED 1. 圖形化配置…

【虛幻引擎】UE5獨立游戲開發全流程(商業級架構)

本套課程我將會講解一下知識 1.虛幻引擎的常用功能節點、模塊包含但不限于動畫模塊、UI模塊、AI模塊、碰撞模塊、傷害模塊、背包模塊、準心模塊、武器模塊、可拾取物品模塊、死亡等模塊。 2.整個游戲的設計思路&#xff08;游戲架構&#xff09;&#xff0c;本套教程講解了如…

ABP-Book Store Application中文講解 - Part 2: The Book List Page

本章用于介紹如何創建Book List Page。 TBD 1. 匯總 ABP-Book Store Application中文講解-匯總-CSDN博客 2. 前一章 ABP-Book Store Application中文講解 - Part 1: Creating the Server Side 項目之間的引用關系。 目錄 1. 多語言配置 1.1 zh-Hans.json 1.2 en.jso…

6、登錄功能后端開發

6、登錄功能后端開發 https://xiaoxueblog.com/ai/%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91.html 1、新建用戶表SQL腳本 -- CREATE DATABASE aicloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;-- 創建用戶表 drop table if exi…

隨機矩陣放大的方式 生成相位數據集,用于相位展開

import os import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import zoom import gc from tqdm import tqdm from zernike import RZerndef wrap_phase(phase):"""將相位包裹到[-π, π]區間"""return np.angle(np.exp(1…

Java面試全記錄:Spring Cloud+Kafka+Redis實戰解析

Java面試全記錄&#xff1a;Spring CloudKafkaRedis實戰解析 人物設定 姓名&#xff1a;張偉&#xff08;隨機生成唯一姓名&#xff09; 年齡&#xff1a;28歲 學歷&#xff1a;碩士 工作年限&#xff1a;5年 工作內容&#xff1a; 基于Spring Cloud搭建微服務架構使用Kafka…

Java Socket編程完全指南:從基礎到實戰應用

Socket編程是構建網絡應用的基石&#xff0c;Java通過java.net包提供了強大的Socket API。本文將深入解析Java Socket類的核心用法&#xff0c;涵蓋TCP/UDP協議實現、多線程通信及性能優化技巧&#xff0c;助您快速掌握網絡編程精髓。 一、Socket編程核心概念 1.1 網絡通信模型…

vue實現導出echarts圖片和table表格

安裝依賴 "xlsx": "^0.18.5","xlsx-style": "^0.8.13""file-saver": "^2.0.5",工具類 toolUtil const autoHeight () > {let winHeight 0if (window.innerHeight) {winHeight window.innerHeight} else if…

AI預測3D新模型百十個定位預測+膽碼預測+去和尾2025年5月15日第78彈

從今天開始&#xff0c;咱們還是暫時基于舊的模型進行預測&#xff0c;好了&#xff0c;廢話不多說&#xff0c;按照老辦法&#xff0c;重點8-9碼定位&#xff0c;配合三膽下1或下2&#xff0c;殺1-2個和尾&#xff0c;再殺6-8個和值&#xff0c;可以做到100-300注左右。 (1)定…

蘭亭妙微B端UI設計:融合多元風格,點亮品牌魅力

在B端產品市場&#xff0c;獨特的品牌形象是企業脫穎而出的關鍵。蘭亭妙微專注于B端UI設計&#xff0c;通過融合多元風格&#xff0c;為企業點亮品牌魅力&#xff0c;助力品牌價值提升。 蘭亭妙微主創團隊源自清華&#xff0c;歷經多年沉淀&#xff0c;積累了豐富的設計經驗。…

MMTEA-DTS--用于多目標多任務優化的基于分解的遷移選擇

MMTEA-DTS–用于多目標多任務優化的基于分解的遷移選擇 title&#xff1a; Multiobjective Multitasking Optimization With Decomposition-Based Transfer Selection author&#xff1a; Qiuzhen Lin, Zhongjian Wu, Lijia Ma, Maoguo Gong , Jianqiang Li, and Carlos A. C…

Python機器學習筆記(二十三 模型評估與改進-網格搜索)

上一次學習了評估一個模型的泛化能力,現在繼續學習通過調參來提升模型的泛化性能。scikit-learn中許多算法的參數設置,在嘗試調參之前,重要的是要理解參數的含義。找到一個模型的重要參數(提供最佳泛化性能的參數)的取值是一項棘手的任務,但對于幾乎所有模型和數據集來說…

集成DHTMLX 預訂排期調度組件實踐指南:如何實現后端數據格式轉換

在企業級應用中&#xff0c;預訂系統&#xff08;Booking System&#xff09;作為典型的調度類應用&#xff0c;廣泛用于酒店、會議室、設備預約、醫療排班等業務場景。而DHTMLX Scheduler作為一款功能強大且高度可定制的 JavaScript 日程安排控件&#xff0c;已成為眾多開發者…

35頁AI應用PPT《DeepSeek如何賦能職場應用》DeepSeek本地化部署與應用案例合集

這份名為《DeepSeek如何賦能職場應用》的PPT文檔詳細介紹了DeepSeek這一人工智能工具在職場中的多樣化應用場景和操作技巧。內容涵蓋了從基礎模型到深度思考模型的不同功能&#xff0c;以及如何通過提示語技巧實現高效的人機協作。文檔還展示了DeepSeek在制作可視化圖表、PPT、…

Axure疑難雜癥:母版菜單設置打開鏈接后菜單選中效果

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 課程主題:菜單打開鏈接后子菜單選中效果 主要內容:母版設計、選中效果 應用場景:頁面賦值 案例展示: 案例視頻:

1.1 認識編程與C++

認識編程與C教程 目標 理解程序、指令、數據的概念。了解C在現實中的應用場景。學會搭建編程環境&#xff0c;邁出第一步。 一、編程是什么&#xff1f;——給計算機寫“魔法指令” 1. 基本概念 程序&#xff1a;一系列指令的集合&#xff0c;像一本“魔法食譜”。 &#x…

centos7部署mysql5.7

1.下載mysql的官方yum源 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2.安裝yum源 yum -y install mysql57-community-release-el7-11.noarch.rpm3.安裝秘鑰文件 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-20224.安裝mysql5.7…

javascript —— ! 和 !! 的區別與作用

javascript —— ! 和 !! 的區別與作用 在 JavaScript 里&#xff0c;! 和 !! 是兩種不同的邏輯運算符&#xff0c;它們的功能和使用場景有明顯區別。 1、 !&#xff08;邏輯非運算符&#xff09; 它的主要作用是 對操作數進行布爾值取反。具體來說&#xff0c;就是 先把操作…

基于互聯網和LabVIEW的多通道數據采集系統仿真設計

標題:基于互聯網和LabVIEW的多通道數據采集系統仿真設計 內容:1.摘要 在當今科技飛速發展的背景下&#xff0c;多通道數據采集在眾多領域有著廣泛需求。本研究的目的是設計一個基于互聯網和LabVIEW的多通道數據采集系統仿真方案。采用互聯網技術實現數據的遠程傳輸與共享&…

前后端設置跨域并從后端允許發送cookie

在java后端創建config文件 package com.zf.demo.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigur…