Docker-鏡像遷移的三種方式=>備份恢復公有倉庫私有倉庫

制作好的鏡像要被別人使用,有三種方式:
1.先備份鏡像,別人通過u盤或者其它方式拷貝后,再恢復鏡像,這種方式比較麻煩
2.將制作的鏡像上傳到公共鏡像倉庫,被別人拉取后使用,但可能存在網絡不通暢或者安全性問題
3.將制作的鏡像上傳到私有鏡像倉庫,被內部人員拉取后使用

下面我將介紹下這三種的具體操作步驟

文章目錄

  • 鏡像備份,再恢復
    • 第一步:鏡像備份
    • 第二步:鏡像恢復
  • 公共倉庫上傳再拉取
    • 注冊docker hub倉庫
    • 創建倉庫repository
    • 上傳鏡像到倉庫
    • 驗證上傳的鏡像
    • 退出登錄
  • 私有倉庫上傳再拉取
    • 拉取私有倉庫鏡像
    • 修改配置
    • 重新加載配置信息以及重啟docker服務
    • 創建私有倉庫的容器
    • 推送鏡像到私有倉庫
    • 配置私有倉庫認證
      • 創建證書存儲目錄
      • 生成自簽名證書命令
      • 生成鑒權文件
      • 創建私有倉庫容器
      • 驗證是否添加認證成功
      • 登錄私有倉庫
      • 上傳鏡像
      • 登出私有倉庫
  • 總結

鏡像備份,再恢復

鏡像遷移涉及到兩個步驟,備份和恢復。
我們可以將任何一個Docker鏡像從一臺機器遷移到另一臺機器。在遷移的過程中,首先我們把容器構建為Docker鏡像。然后,該Docker鏡像被作為tar包文件保存到本地。此時只需要拷貝或移動該鏡像到我們想要的機器上,恢復該鏡像并運行容器即可

第一步:鏡像備份

使用 docker save將指定的鏡像保存成tar歸檔文件
docker save [OPTIONS] IMAGE [IMAGE…]
docker save -o /root/mycentos7.tar mycentos:7
-o:鏡像打包后的歸檔文件輸出的目錄

第二步:鏡像恢復

使用docker load導入docker save命令導出的鏡像歸檔的文件
docker load [OPTIONS]
docker load -i mycentos7.tar

–input,-i:指定導入的文件
–quiet,-q:精簡輸出信息

公共倉庫上傳再拉取

注冊docker hub倉庫

登錄https://hub.docker.com/signup上注冊
在這里插入圖片描述

創建倉庫repository

注冊登錄后,點擊repositories選項選擇創建倉庫
在這里插入圖片描述
到創建倉庫頁面,主要輸入倉庫名稱即可
在這里插入圖片描述
待創建好以后到轉到自己創建好的倉庫內,里面已經為我們寫好上傳鏡像的指令
docker push cyl01/test-cyl:tagname
在這里插入圖片描述

上傳鏡像到倉庫

我將本地的mysql5.7鏡像添加到docker hub倉庫內,我首先先登錄docker hub
輸入指令 sudo docker login
在這里插入圖片描述
執行指令打標簽sudo docker tag mysql:5.7 cyl01/test-cyl:1.0.0
標簽打完后再上傳 sudo docker push cyl01/test-cyl:1.0.0
在這里插入圖片描述

驗證上傳的鏡像

登錄到docker hub上查看自己的repository,tags標簽頁下出現鏡像1.0.0即上傳成功
在這里插入圖片描述

退出登錄

通過docker logout命令退出DockerHub

私有倉庫上傳再拉取

DockerHub為我們提供了官方鏡像和我們上傳的鏡像,我們可以下載機構或者個人提供的鏡像,也可以上傳我們的本地鏡像,但缺點是
1.網絡原因,從dockerHub下載和上傳鏡像速度比較慢
2.安全原因,我們不想被外部人員獲取我們的代碼和配置信息,只允許內部開發人員下載
為了解決以上問題,docker官方提供了registry的鏡像用于搭建本地私有倉庫使用。

拉取私有倉庫鏡像

輸入指令docker pull registry 拉取registry鏡像

修改配置

etc/docker/daemon.json添加以下內容,用于讓docker 信任私有倉庫地址,保存退出

{# 192.168.0.120私有倉庫的ip地址,5000是端口號"insecure-registries":["192.168.0.120:5000"]
}

重新加載配置信息以及重啟docker服務

# 重新加載某個服務的配置文件
sudo systemctl daemon-reload
# 重新啟動docker
sudo systemctl restart docker

創建私有倉庫的容器

輸入sudo docker run -di --name registry -p 5000:5000 -v /cyl/docker/docker_registry:/var/lib/registry registry

在瀏覽器輸入http://ip:5000/v2/_catalog,出現如下結果即創建成功
在這里插入圖片描述

推送鏡像到私有倉庫

先給鏡像設置標簽 docker tag local-image:tagname new-repo:tagname
再將鏡像推送到私有倉庫 docker push new-repo:tagname

例如我要將mysql5.7的鏡像推送私有倉庫

# 打標簽
sudo docker tag mysql:5.7 192.168.0.122:5000/mysql:1.0.0
# 推送
sudo docker push 192.168.0.122:5000/mysql:1.0.0

輸入http://ip:5000/v2/_catalog,私有倉庫下存在了mysql鏡像
在這里插入圖片描述

配置私有倉庫認證

私有倉庫搭建好了,但是要確保倉庫的安全性,還需要一個安全認證證書,防止發生意想不到的事情。所以需要在搭建私有倉庫的docker主機上生成自簽名證書

創建證書存儲目錄

sudo mkdir -p /usr/local/registry/certs

生成自簽名證書命令

sudo openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/registry/certs/domain.key -x509 -days 365 -out /usr/local/registry/certs/domain.crt
  • openssl req:創建證書簽名請求等功能;
    -newkey:創建 CSR 證書簽名文件和 RSA 私鑰文件;
    rsa:2048:指定創建的 RSA 私鑰長度為 2048;
  • -nodes:對私鑰不進行加密;
  • -sha256:使用 SHA256 算法;
  • -keyout:創建的私鑰文件名稱及位置;
  • -x509:自簽發證書格式;
  • -days:證書有效期;
  • -out:指定 CSR 輸出文件名稱及位置;
    通過 openssl 先生成自簽名證書,運行命令以后需要填寫一些證書信息,里面最關鍵的部分是:Common Name (eg, your name or your server's hostname) []:192.168.0.122,這里填寫的是私有倉庫的地址。
    在這里插入圖片描述

生成鑒權文件

# 創建存儲鑒權密碼文件目錄
sudo mkdir -p /usr/local/registry/auth
# 如果沒有 htpasswd 功能需要安裝 httpd
sudo yum install -y httpd
# 創建用戶和密碼,-c創建文件,-b使用命令行中的密碼,而不是提示輸入密碼,-B強制bcrypt加密密碼(非常安全)
# 第一次生成時使用-c參數創建用戶及密碼文件,下次再生成時無需使用-c參數會追加至文件
sudo htpasswd -cbB /usr/local/registry/auth/htpasswd root root

htpasswd 是 apache http 的基本認證文件,使用 htpasswd 命令可以生成用戶及密碼文件

創建私有倉庫容器

docker run -di --name registry -p 5000:5000 \-v /mydata/docker_registry:/var/lib/registry \-v /usr/local/registry/certs:/certs \-v /usr/local/registry/auth:/auth \-e "REGISTRY_AUTH=htpasswd" \-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \registry

驗證是否添加認證成功

此時在瀏覽器中輸入https:私有倉庫地址:5000/v2/_catalog,需要輸入用戶名和密碼,均為root
在這里插入圖片描述
此時上傳鏡像時需要先登錄,否則會出現no basic auth credentials異常
在這里插入圖片描述

登錄私有倉庫

登錄時使用指令sudo docker login -u root -p root ip:5000
注意必須指定私有倉庫地址,否則默認登陸的是docker hub
在這里插入圖片描述

上傳鏡像

登陸成功后,先打標簽,再上傳
sudo docker tag mysql:5.7 192.168.0.122:5000/mysql:1.0.0
sudo docker push 192.168.0.122:5000/mysql:1.0.0
登陸私有倉庫現在有mysql這個鏡像了
在這里插入圖片描述

登出私有倉庫

通過docker logout命令退出私有倉庫

總結

本文主要講解了鏡像遷移的三種方式,鏡像的備份和恢復不好管理且不利于合作開發,公共鏡像倉庫方式由于有網絡和安全方面問題,企業級項目一般不使用,通常企業內一般會自己設置私有倉庫,安全且上傳或下載的速度也比較快。不過使用私有倉庫時也需要進行安全認證,防止意想不到的事情發生

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

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

相關文章

【零基礎C語言】內存函數

前言: 我們之前學過strcpy,strcmp等等函數,他們可以拷貝字符串和比較字符串等等,那么有沒有什么函數不光可以拷貝字符串還可以拷貝其他的數據呢,答案就是內存函數。 相較于字符串函數,內存函數可以拷貝的…

贖金信[簡單]

優質博文:IT-BLOG-CN 一、題目 給你兩個字符串:ransomNote和magazine,判斷ransomNote能不能由magazine里面的字符構成。如果可以,返回true;否則返回false。magazine中的每個字符只能在ransomNote中使用一次。 示例 …

DPDK實踐之(1)dpdk基礎使用

DPDK實踐之(1)dpdk基礎使用 Author: Once Day Date: 2024年5月19日 一位熱衷于Linux學習和開發的菜鳥,試圖譜寫一場冒險之旅,也許終點只是一場白日夢… 漫漫長路,有人對你微笑過嘛… 全系列文檔可參考專欄:Linux基礎知識_Once…

java判斷日期格式的正則表達式

java判斷日期格式的正則表達式 在Java中,你可以使用String類的matches()方法來檢查一個字符串是否匹配特定的正則表達式。以下是一個用于判斷日期格式是否為YYYY-MM-DD的正則表達式的例子: public class DateValidator { public static boolean isVal…

C語言 | Leetcode C語言題解之第109題有序鏈表轉換二叉搜索樹

題目: 題解: int getLength(struct ListNode* head) {int ret 0;while (head ! NULL) {ret, head head->next;}return ret; }struct TreeNode* buildTree(struct ListNode** head, int left, int right) {if (left > right) {return NULL;}int …

Mac維護神器CleanMyMac X成為你的蘋果電腦得力助手

在數字化時代,Mac電腦已成為眾多用戶的首選。然而,隨著頻繁的使用和數據量的日益增長,許多Mac用戶面臨著系統雜亂、存儲空間不足以及隱私保護等問題。幸運的是,"CleanMyMac X"這款優化和清理工具應運而生,它…

ROCm上情感分析:使用循環神經網絡

15.2. 情感分析:使用循環神經網絡 — 動手學深度學習 2.0.0 documentation (d2l.ai) 代碼 import torch from torch import nn from d2l import torch as d2lbatch_size 64 train_iter, test_iter, vocab d2l.load_data_imdb(batch_size)class BiRNN(nn.Module):…

java抽象類,接口,枚舉練習題

第一題: 答案: class Animal{//成員變量protected String name;protected int weight;//構造方法public Animal(){this.name"refer";this.weight50;}public Animal(String name,int weight){this.namename;this.weightweight;}//成員方法publ…

Bugku Crypto 部分題目簡單題解(四)

目錄 python_jail 簡單的rsa 托馬斯.杰斐遜 這不是md5 進制轉換 affine Crack it rsa python_jail 啟動場景 使用虛擬機nc進行連接 輸入print(flag) 發現報錯,經過測試只能傳入10個字符多了就會報錯 利用python中help()函數,借報錯信息帶出flag變…

【力扣刷題筆記第三期】Python 數據結構與算法

先從簡單的題型開始刷起,一起加油啊!! 點個關注和收藏唄,一起刷題鴨!! 第一批題目 1.設備編號 給定一個設備編號區間[start, end],包含4或18的編號都不能使用,如:418、…

對于map的新應用

題源codeforces1974 problemC 題目大意 定義當兩個三元組A和B中,滿足三元組中有且僅有兩個元素相等,比如 a 1 b 1 , a 2 b 2 , a 3 ! b 3 a_1b_1,a_2b_2,a_3!b_3 a1?b1?,a2?b2?,a3?!b3? 這只是一種情況,三種情況之一 解題思路 …

java抽象類和接口知識總結

一.抽象類 1.啥是抽象類 用專業語言描述就是:如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類 當然這話說的也很抽象,所以我們來用人話來解釋一下抽象類 拋開編程語言這些,就以現實舉例,我…

每日練習之排序——鏈表的合并;完全背包—— 兌換零錢

鏈表的合并 題目描述 運行代碼 #include<iostream> #include<algorithm> using namespace std; int main() { int a[31];for(int i 1;i < 30;i)cin>>a[i];sort(a 1,a 1 30);for(int i 1;i < 30;i)cout<<a[i]<<" ";cout&…

Mysql之Innodb存儲引擎

1.Innodb數據存儲 innodb如今能夠做到mysql的默認數據存儲引擎&#xff0c;肯定有著其好處的&#xff0c;那么innodb有什么好處呢? 1. 當意外斷電或者重啟&#xff0c; InnoDB 能夠做到奔潰恢復&#xff0c;撤銷沒有提交的數據 2.InnoDB 存儲引擎維護自己的緩沖池&#xff0c…

UDS(ISO 14229)學習筆記

文章目錄 名詞縮寫Vector視頻筆記$10$27Fault Memory物理尋址和功能尋址UDS服務分類0x19服務0x14DTC汽車控制器(ECU)中DTC的狀態位物理尋址和功能尋址單幀 多幀 首幀 連續幀名詞縮寫 DTC Diagnostic Trouble Code FTB Fault Type Byte SID Service Identifier SF Subfunctio…

DML(Data Manipulation Language)數據操作語言

一、增加 insert into -- 寫全所有列名 insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);-- 不寫列名&#xff08;所有列全部添加&#xff09; insert into 表名 values(值1,值2,...值n);-- 插入部分數據 insert into 表名(列名1,列名2) values(值1,值2); 舉…

醫院掛號就診系統的設計與實現

前端使用Vue.js 后端使用SpiringBoot MyBatis 數據使用MySQL 需要項目和論文加企鵝&#xff1a;2583550535 醫院掛號就診系統的設計與實現_嗶哩嗶哩_bilibili 隨著社會的發展&#xff0c;醫療資源分布不均&#xff0c;患者就診難、排隊時間長等問題日益突出&#xff0c;傳統的…

軟考備考三

操作系統 操作系統概述 功能&#xff1a;組織和管理軟件&#xff0c;硬件資源以及計算機系統中的工作流程&#xff0c;控制程序的執行&#xff0c;向用戶提供接口。 分類&#xff1a; 1.批處理操作系統 單道批 多道批&#xff08;宏觀上并行&#xff0c;微觀上串行&#xff09…

Hadoop3:HDFS的Fsimage和Edits文件介紹

一、概念 Fsimage文件&#xff1a;HDFS文件系統元數據的一個永久性的檢查點&#xff0c;其中包含HDFS文件系統的所有目 錄和文件inode的序列化信息。 Edits文件&#xff1a;存放HDFS文件系統的所有更新操作的路徑&#xff0c;文件系統客戶端執行的所有寫操作首先 會被記錄到Ed…

K8s 身份認證和權限

文章目錄 K8s 身份認證和權限認證Service AccountsService Account Admission ControllerToken ControllerService Account Controller 授權(RBAC)RoleClusterRoleRoleBindingClusterRoleBinding K8s 身份認證和權限 Kubernetes 中提供了良好的多租戶認證管理機制&#xff0c;…