最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)境:代碼跑通了。
  • 測試環(huán)境:測試說有問題,依賴的庫版本不對(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ā)、測試、生產(chǎn)任何環(huán)節(jié)都完全一致。
  • 結(jié)果:只要在開發(fā)機(jī)能運(yùn)行成功,那么在任何裝有Docker的機(jī)器上(測試、預(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無法連接到官方鏡像倉庫常見原因及解決辦法

    Docker無法連接到官方鏡像倉庫常見原因及解決辦法

    在軟件開發(fā)和部署過程中,Docker已經(jīng)成為一個(gè)廣泛使用的容器化解決方案,下面這篇文章主要介紹了Docker無法連接到官方鏡像倉庫常見原因及解決辦法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-02-02
  • Docker Compose 兩種安裝與使用方案(適用于 Docker 19.03 版本)

    Docker Compose 兩種安裝與使用方案(適用于 Docker 19.0

    本文以Docker 19.03.15(Ubuntu 20.04)為例,詳細(xì)對(duì)比這兩種方式的安裝、使用和特點(diǎn),幫助你快速選擇適合自己的方案,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • docker 多個(gè)-e參數(shù)的具體使用

    docker 多個(gè)-e參數(shù)的具體使用

    在使用Docker鏡像運(yùn)行容器時(shí),我們可以通過使用-e參數(shù)來設(shè)置環(huán)境變量,有時(shí)我們需要設(shè)置多個(gè)環(huán)境變量,這就涉及到如何實(shí)現(xiàn)多個(gè)-e參數(shù)的問題,本文就來詳細(xì)的介紹一下
    2024-01-01
  • ubuntu22通過docker安裝wechat啟動(dòng)后無界面的問題及解決方法

    ubuntu22通過docker安裝wechat啟動(dòng)后無界面的問題及解決方法

    這篇文章主要介紹了ubuntu22通過docker安裝wechat啟動(dòng)后無界面的解決方法,通過微信創(chuàng)建腳本發(fā)現(xiàn)一系列問題,最終在小編的努力下順利解決,下面把解決過程分享給大家,需要的朋友可以參考下
    2022-07-07
  • 基于docker 搭建Prometheus+Grafana的過程詳解

    基于docker 搭建Prometheus+Grafana的過程詳解

    這篇文章主要介紹了基于docker 搭建Prometheus+Grafana的過程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 搭建docker內(nèi)網(wǎng)私服的方法(docker-registry with nginx&ssl on centos)

    搭建docker內(nèi)網(wǎng)私服的方法(docker-registry with nginx&ssl on centos)

    這篇文章主要介紹了搭建docker內(nèi)網(wǎng)私服的方法(docker-registry with nginx&ssl on centos),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • docker部署Trilium?Notes和cpolar,實(shí)現(xiàn)遠(yuǎn)程在線協(xié)作(圖文教程)

    docker部署Trilium?Notes和cpolar,實(shí)現(xiàn)遠(yuǎn)程在線協(xié)作(圖文教程)

    Trilium?Notes?是一款層次化筆記工具,能構(gòu)建大型個(gè)人知識(shí)庫,支持樹形結(jié)構(gòu)、Markdown?編輯、雙向鏈接和加密等功能,本文講述Trilium?Notes的中文版如何在Linux環(huán)境使用docker本地部署,并結(jié)合cpolar內(nèi)網(wǎng)穿透工具配置公網(wǎng)地址,輕松實(shí)現(xiàn)遠(yuǎn)程在線協(xié)作的詳細(xì)教程
    2026-01-01
  • 如何基于Dockerfile構(gòu)建tomcat鏡像

    如何基于Dockerfile構(gòu)建tomcat鏡像

    這篇文章主要介紹了如何基于Dockerfile構(gòu)建tomcat鏡像,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • docker 動(dòng)態(tài)映射運(yùn)行的container端口實(shí)例詳解

    docker 動(dòng)態(tài)映射運(yùn)行的container端口實(shí)例詳解

    這篇文章主要介紹了 docker 動(dòng)態(tài)映射運(yùn)行的container端口實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Docker部署Prometheus的實(shí)現(xiàn)示例

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

    Prometheus是一款開源的監(jiān)控和告警工具,它可以收集系統(tǒng)的各種指標(biāo)數(shù)據(jù),如CPU使用率、內(nèi)存使用量等,本文主要介紹了Docker部署Prometheus的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-08-08

最新評(píng)論

焉耆| 濉溪县| 秦安县| 嵊州市| 鹤山市| 兴仁县| 海兴县| 盐池县| 黄山市| 东丰县| 沿河| 新竹县| 浠水县| 哈密市| 汾阳市| 苗栗市| 壤塘县| 信阳市| 弥勒县| 井冈山市| 潍坊市| 陈巴尔虎旗| 仲巴县| 咸宁市| 绥棱县| 平凉市| 连云港市| 湾仔区| 定安县| 井研县| 仙居县| 洛扎县| 吉水县| 曲靖市| 宝山区| 翁源县| 视频| 平和县| 丰都县| 高阳县| 永吉县|