亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Docker鏡像指南之從核心命令到離線遷移實(shí)戰(zhàn)

 更新時(shí)間:2025年09月03日 09:31:16   作者:敲上癮  
Docker鏡像為只讀分層文件,包含應(yīng)用及依賴,通過聯(lián)合文件系統(tǒng)實(shí)現(xiàn)高效共享和構(gòu)建,其不可變特性確??绛h(huán)境一致性,簡化標(biāo)準(zhǔn)化交付,提升部署效率,支持離線遷移,接下來通過本文給大家介紹Docker鏡像指南之從核心命令到離線遷移實(shí)戰(zhàn),感興趣的朋友跟隨小編一起看看吧

Docker鏡像是什么?

  Docker鏡像本質(zhì)是一個(gè)只讀文件。它包含了創(chuàng)建Docker容器所需的全部文件和配置信息,除應(yīng)用程序本身(例如一個(gè)編譯好的Jar包),還包含了應(yīng)用程序運(yùn)行所需的所有依賴項(xiàng)(如操作系統(tǒng)、運(yùn)行時(shí)環(huán)境、系統(tǒng)工具、庫文件等)。

核心特性與詳細(xì)解釋

分層結(jié)構(gòu)

  • 鏡像是由一系列只讀層(Layers) 堆疊而成的。
  • 每一層代表鏡像Dockerfile中的一條指令(例如:RUN apt-get update, COPY . /app)。
  • 這種結(jié)構(gòu)帶來了巨大的好處:
    • 共享和復(fù)用:如果兩個(gè)鏡像基于同一個(gè)基礎(chǔ)層(如Ubuntu),那么它們可以共享這一層,節(jié)省磁盤空間和下載時(shí)間。
    • 高效構(gòu)建:當(dāng)你修改Dockerfile并重新構(gòu)建鏡像時(shí),Docker只會(huì)重新構(gòu)建那些發(fā)生改變的層及其之后的層,大大加快了構(gòu)建速度。

只讀性(Read-Only)

  • 鏡像本身是只讀的。當(dāng)你從一個(gè)鏡像啟動(dòng)一個(gè)容器時(shí),Docker會(huì)在鏡像的所有層之上添加一個(gè)可寫的容器層(Container Layer)。
  • 所有對(duì)運(yùn)行中容器的修改(如創(chuàng)建新文件、修改文件、安裝軟件)都發(fā)生在這個(gè)可寫層上。這使得容器可以隨意更改,而不會(huì)影響到底層的基礎(chǔ)鏡像。
  • 當(dāng)某個(gè)容器需要修改這個(gè)共享層里的文件時(shí),寫時(shí)復(fù)制機(jī)制會(huì)觸發(fā),為該容器單獨(dú)復(fù)制一份文件到其可寫層進(jìn)行修改,而其他容器仍然讀取原始文件。

內(nèi)容可尋址(Content-Addressable)

  • 每個(gè)鏡像都有一個(gè)唯一的標(biāo)識(shí)符,稱為鏡像ID(一個(gè)SHA256哈希值)。這個(gè)ID是根據(jù)鏡像每一層的內(nèi)容計(jì)算出來的。
  • 這意味著只要鏡像的內(nèi)容完全相同,它們的ID就一定會(huì)相同。這保證了鏡像的唯一性和完整性。

基于聯(lián)合文件系統(tǒng)(Union File Systems)

  • 分層和只讀的特性是通過聯(lián)合文件系統(tǒng)(如Overlay2、AUFS) 來實(shí)現(xiàn)的。這種文件系統(tǒng)能夠?qū)⒍鄠€(gè)不同的目錄(層)透明地疊加在一起,形成一個(gè)統(tǒng)一的視圖,呈現(xiàn)給容器。

為什么要使用鏡像?

  最核心的理由是:鏡像提供了一種標(biāo)準(zhǔn)化的、輕量級(jí)的、不可變的交付物,它保證了應(yīng)用在任何環(huán)境中都能以完全一致的方式運(yùn)行,從而實(shí)現(xiàn)了“構(gòu)建一次,隨處運(yùn)行”。

下面我們從幾個(gè)關(guān)鍵角度來詳細(xì)拆解為什么要使用鏡像:

  1. 解決環(huán)境一致性難題(“在我這兒是好的!”)
    這是使用鏡像最首要、最直接的原因。

傳統(tǒng)痛點(diǎn):

  • 開發(fā)環(huán)境:代碼跑通了。
  • 測(cè)試環(huán)境:測(cè)試說有問題,依賴的庫版本不對(duì)。
  • 生產(chǎn)環(huán)境:運(yùn)維部署失敗,系統(tǒng)配置有差異。

這就是經(jīng)典的“ works on my machine ”問題。

鏡像的解決方案:

  • 鏡像將應(yīng)用代碼、運(yùn)行時(shí)環(huán)境、系統(tǒng)工具、系統(tǒng)庫、配置全部打包在一起,形成一個(gè)完整的、獨(dú)立的軟件包。
  • 這個(gè)包在開發(fā)、測(cè)試、生產(chǎn)任何環(huán)節(jié)都完全一致。
  • 結(jié)果:只要在開發(fā)機(jī)能運(yùn)行成功,那么在任何裝有Docker的機(jī)器上(測(cè)試、預(yù)生產(chǎn)、生產(chǎn)),它都能以完全相同的方式運(yùn)行,徹底消除了環(huán)境差異帶來的問題。
  1. 實(shí)現(xiàn)極致的標(biāo)準(zhǔn)化和交付簡化

鏡像成為一種通用的、標(biāo)準(zhǔn)的軟件交付物。

  • 傳統(tǒng)方式:交付物可能是一份代碼、一個(gè)War/Jar包,再加上一長串的、復(fù)雜的、可能還不全的“環(huán)境配置說明文檔”。
  • 鏡像方式:交付物就是一個(gè)鏡像文件(或一個(gè)鏡像名稱和標(biāo)簽)。部署命令簡單到極致:docker run our-app:latest。

這個(gè)命令包含了下載、解壓、配置、運(yùn)行所有步驟。它極大地簡化了部署流程,降低了運(yùn)維成本和對(duì)運(yùn)維人員技能的要求。

鏡像相關(guān)的命令

關(guān)于login,pull,push等命令的解析請(qǐng)參考:Docker核心概念與鏡像倉庫操作指南

docker rmi

功能:刪除鏡像。
語法:

docker rmi [OPTIONS] IMAGE [IMAGE...]  

別名:docker image rm,docker image remove
關(guān)鍵參數(shù):

  • -f:強(qiáng)制刪除;
  • --no-prune:不移除該鏡像的過程鏡像,默認(rèn)移除。

示例:

  • 準(zhǔn)備鏡像:
    • docker pull busybox:1.36.0
    • docker pull busybox:1.35.0
  • 查看鏡像:docker images busybox
  • 刪除鏡像
    • 方法一:通過ID刪除
    • 方法二:通過tag刪除

注意:被引用的鏡像無法被刪除,需要先關(guān)閉相應(yīng)的容器。

示例:

  1. 重新拉取鏡像:docker pull busybox:1.36.0 busybox:1.36.0
  2. 啟動(dòng)容器:docker run -it --name mybox busybox:1.36.0 sh
  3. 刪除鏡像:docker rmi busybox:1.36.0
  4. 刪除容器:docker rm mybox
  5. 再次刪除鏡像:docker rmi busybox:1.36.0
  6. 查看鏡像信息:docker images busybox

注意:鏡像有多個(gè)標(biāo)簽時(shí),指定鏡像標(biāo)簽所刪除的只是標(biāo)簽,鏡像并沒刪除,在使用該鏡像的容器在運(yùn)行,只是不能再用標(biāo)簽管理,只能使用ID
docker save
功能:將指定鏡像保存成 tar 歸檔文件。
語法:

docker save [OPTIONS] IMAGE [IMAGE...]  

別名:docker image save
關(guān)鍵參數(shù):

  • -o:輸出到的文件。

示例:

docker load
功能:導(dǎo)入使用 docker save 命令導(dǎo)出的鏡像。
語法:

docker load [OPTIONS]  

別名:docker image load
關(guān)鍵參數(shù):

  • --input, -i:指定導(dǎo)入的文件,代替 STDIN。
  • --quiet, -q:精簡輸出信息。

示例:

  1. 刪除原有鏡像
  2. 導(dǎo)入鏡像

docker history
功能:展示的是鏡像的構(gòu)建歷史記錄
語法:

docker history [OPTIONS] IMAGE

別名:docker image history
關(guān)鍵參數(shù):

  • -H, --human:大小和日期采用人容易讀的格式展現(xiàn)
  • --no-trunc:顯示全部信息,不要隔斷
  • -q, --quiet:只顯示鏡像 ID 信息

示例:

docker image prune
功能:刪除不使用的鏡像。
語法:docker image prune [OPTIONS]
關(guān)鍵參數(shù):

  • -a, --all:刪除全部不使用的鏡像;
  • --filter filter:指定過濾條件;
  • -f, --force:不提示是否刪除。

離線遷移鏡像

  離線遷移鏡像指的是在沒有網(wǎng)絡(luò)連接或無法直接訪問鏡像倉庫(如Docker Hub、Harbor)的環(huán)境下,將Docker鏡像從一臺(tái)機(jī)器轉(zhuǎn)移到另一臺(tái)機(jī)器的過程。
  它不通過網(wǎng)絡(luò)拉?。╠ocker pull),而是先將鏡像打包成一個(gè)離線文件(如.tar歸檔文件),然后通過物理媒介(如U盤、移動(dòng)硬盤)或內(nèi)部文件傳輸方式,將這個(gè)文件復(fù)制到目標(biāo)機(jī)器上,最后再加載到目標(biāo)機(jī)器的Docker環(huán)境中。
  這里使用scp把鏡像從一個(gè)服務(wù)器拷貝到另一個(gè)服務(wù)器,這個(gè)過程的鏡像數(shù)據(jù)流是在兩個(gè)服務(wù)器之間直接通過SSH協(xié)議傳輸?shù)?,完全走的是?nèi)部的網(wǎng)絡(luò)通道,與外部互聯(lián)網(wǎng)隔離。

  1. 導(dǎo)出鏡像:docker save -o mybox2.0 busybox:1.35.0
  2. 拷貝到另一臺(tái)服務(wù)器:scp docker mybox2.0 root@服務(wù)器IP:要拷貝到的目錄
  3. 另一臺(tái)服務(wù)器把鏡像導(dǎo)出:docker load -i mybox2.0

到此這篇關(guān)于Docker鏡像指南之從核心命令到離線遷移實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)Docker鏡像離線遷移內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker配置daemon.json鏡像加速文件方式

    docker配置daemon.json鏡像加速文件方式

    這篇文章主要介紹了docker配置daemon.json鏡像加速文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • kali下對(duì)Docker的詳細(xì)安裝教程

    kali下對(duì)Docker的詳細(xì)安裝教程

    這篇文章主要介紹了kali下對(duì)Docker的詳細(xì)安裝,Docker是滲透測(cè)試中必學(xué)不可的一個(gè)容器工具,在其中,我們能夠快速創(chuàng)建、運(yùn)行、測(cè)試以及部署應(yīng)用程序,對(duì)kali安裝docker相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-05-05
  • docker部署mysql后無法連接的解決方式

    docker部署mysql后無法連接的解決方式

    最近在在docker中安裝了mysql后,去連接的時(shí)候出現(xiàn)錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于docker部署mysql后無法連接的解決方式,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • docker通過sbom獲取組件版本和漏洞編號(hào)的方法

    docker通過sbom獲取組件版本和漏洞編號(hào)的方法

    本文主要介紹了docker通過sbom獲取組件版本和漏洞編號(hào)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • Linux中安裝Docker Compose的步驟

    Linux中安裝Docker Compose的步驟

    Docker Compose需要在系統(tǒng)上安裝了Docker才能正常工作,如果你的系統(tǒng)上還沒有安裝Docker,請(qǐng)先安裝Docker,下面給大家分享Linux中安裝Docker Compose的步驟,感興趣的朋友一起看看吧
    2024-05-05
  • Docker Gitlab+Jenkins+Harbor構(gòu)建持久化平臺(tái)操作

    Docker Gitlab+Jenkins+Harbor構(gòu)建持久化平臺(tái)操作

    這篇文章主要介紹了Docker Gitlab+Jenkins+Harbor構(gòu)建持久化平臺(tái)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解Dockerfile 中的 COPY 與 ADD 命令

    詳解Dockerfile 中的 COPY 與 ADD 命令

    Dockerfile 中提供了兩個(gè)非常相似的命令 COPY 和 ADD,本文嘗試解釋這兩個(gè)命令的基本功能,以及其異同點(diǎn),然后總結(jié)其各自適合的應(yīng)用場景。感興趣的朋友跟隨小編一起看看吧
    2018-09-09
  • Docker數(shù)據(jù)存儲(chǔ)之tmpfs mounts詳解

    Docker數(shù)據(jù)存儲(chǔ)之tmpfs mounts詳解

    今天小編就為大家分享一篇關(guān)于Docker數(shù)據(jù)存儲(chǔ)之tmpfs mounts詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Docker rocketmq部署的實(shí)現(xiàn)示例

    Docker rocketmq部署的實(shí)現(xiàn)示例

    最近學(xué)習(xí)使用 rocketmq,需要搭建 rocketmq 服務(wù)端,本文主要記錄 rocketmq 搭建過程以及這個(gè)過程踩到的一些坑,感興趣的可以了解一下
    2021-12-12
  • docker安裝RocketMQ的實(shí)現(xiàn)步驟

    docker安裝RocketMQ的實(shí)現(xiàn)步驟

    本文主要介紹了docker安裝RocketMQ的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評(píng)論