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

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

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

Docker鏡像是什么?

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

核心特性與詳細解釋

分層結構

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

只讀性(Read-Only)

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

內容可尋址(Content-Addressable)

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

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

  • 分層和只讀的特性是通過聯合文件系統(tǒng)(如Overlay2、AUFS) 來實現的。這種文件系統(tǒng)能夠將多個不同的目錄(層)透明地疊加在一起,形成一個統(tǒng)一的視圖,呈現給容器。

為什么要使用鏡像?

  最核心的理由是:鏡像提供了一種標準化的、輕量級的、不可變的交付物,它保證了應用在任何環(huán)境中都能以完全一致的方式運行,從而實現了“構建一次,隨處運行”。

下面我們從幾個關鍵角度來詳細拆解為什么要使用鏡像:

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

傳統(tǒng)痛點:

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

這就是經典的“ works on my machine ”問題。

鏡像的解決方案:

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

鏡像成為一種通用的、標準的軟件交付物。

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

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

鏡像相關的命令

關于login,pullpush等命令的解析請參考:Docker核心概念與鏡像倉庫操作指南

docker rmi

功能:刪除鏡像。
語法:

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

別名:docker image rm,docker image remove
關鍵參數:

  • -f:強制刪除;
  • --no-prune:不移除該鏡像的過程鏡像,默認移除。

示例:

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

注意:被引用的鏡像無法被刪除,需要先關閉相應的容器。

示例:

  1. 重新拉取鏡像:docker pull busybox:1.36.0 busybox:1.36.0
  2. 啟動容器: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

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

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

別名:docker image save
關鍵參數:

  • -o:輸出到的文件。

示例:

docker load
功能:導入使用 docker save 命令導出的鏡像。
語法:

docker load [OPTIONS]  

別名:docker image load
關鍵參數:

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

示例:

  1. 刪除原有鏡像
  2. 導入鏡像

docker history
功能:展示的是鏡像的構建歷史記錄
語法:

docker history [OPTIONS] IMAGE

別名:docker image history
關鍵參數:

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

示例:

docker image prune
功能:刪除不使用的鏡像。
語法:docker image prune [OPTIONS]
關鍵參數:

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

離線遷移鏡像

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

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

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

相關文章

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

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

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

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

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

    docker 多個-e參數的具體使用

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

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

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

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

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

    搭建docker內網私服的方法(docker-registry with nginx&ssl on centos)

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

    docker部署Trilium?Notes和cpolar,實現遠程在線協作(圖文教程)

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

    如何基于Dockerfile構建tomcat鏡像

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

    docker 動態(tài)映射運行的container端口實例詳解

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

    Docker部署Prometheus的實現示例

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

最新評論

旬阳县| 通海县| 滨海县| 温宿县| 黄骅市| 塘沽区| 宁河县| 定日县| 宣武区| 南涧| 科技| 林甸县| 东光县| 和田县| 文昌市| 沂南县| 西平县| 磴口县| 乃东县| 浦城县| 宁蒗| 年辖:市辖区| 汤阴县| 宁安市| 普定县| 徐州市| 四子王旗| 清水县| 灌阳县| 包头市| 来宾市| 宜黄县| 襄汾县| 菏泽市| 都安| 安远县| 铜川市| 广汉市| 乌鲁木齐市| 泸西县| 交城县|