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

從入門(mén)到實(shí)戰(zhàn)全面解析Docker鏡像常用命令

 更新時(shí)間:2025年11月27日 09:26:22   作者:愛(ài)吃烤雞翅的酸菜魚(yú)  
Docker 作為容器化技術(shù)的標(biāo)桿工具,其鏡像管理能力是實(shí)現(xiàn)高效 CI/CD 流程的核心,本文將為大家?guī)?lái)Docker 鏡像常用命令的全方位解析,希望對(duì)大家有所幫助

作為一位深耕 Java 領(lǐng)域的技術(shù)博主,我深知容器化技術(shù)在現(xiàn)代應(yīng)用開(kāi)發(fā)中的重要性。Docker 作為容器化技術(shù)的標(biāo)桿工具,其鏡像管理能力是實(shí)現(xiàn)高效 CI/CD 流程的核心。今天,我將為大家?guī)?lái)Docker 鏡像常用命令的全方位解析,這份指南幫助你真正掌握 Docker 鏡像管理的核心技能。

一、背景與問(wèn)題:為什么需要精通 Docker 鏡像命令

在微服務(wù)架構(gòu)盛行的當(dāng)下,Docker 已經(jīng)成為應(yīng)用部署的標(biāo)準(zhǔn)工具鏈。然而,許多開(kāi)發(fā)者在使用 Docker 時(shí)存在以下問(wèn)題:

  • 只知其一不知其二:知道 docker pull 但不清楚其背后的注冊(cè)表機(jī)制
  • 鏡像臃腫問(wèn)題:構(gòu)建的鏡像動(dòng)輒數(shù)百 MB,極大影響部署效率
  • 版本管理混亂:缺乏有效的鏡像版本控制策略,導(dǎo)致生產(chǎn)環(huán)境問(wèn)題頻發(fā)
  • 安全風(fēng)險(xiǎn):未對(duì)鏡像進(jìn)行安全掃描,存在已知漏洞的風(fēng)險(xiǎn)

二、Docker 鏡像核心命令詳解

2.1 鏡像基礎(chǔ)管理命令

docker images:查看本地鏡像列表

基本用法:

docker images [OPTIONS] [REPOSITORY[:TAG]]

常用參數(shù):

參數(shù)說(shuō)明
-a顯示所有鏡像(包括中間層)
--digests顯示鏡像摘要信息
-f過(guò)濾鏡像(如 dangling=true)
--format自定義輸出格式(Go 模板語(yǔ)法)

實(shí)戰(zhàn)示例:

# 以表格形式查看所有 java 鏡像
docker images java --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Size}}"

# 只顯示鏡像ID和名稱(chēng)
docker images --format "{{.ID}}: {{.Repository}}"

關(guān)鍵知識(shí)點(diǎn):

  • 鏡像 ID 實(shí)際是鏡像的 層哈希值,相同的層可以被多個(gè)鏡像復(fù)用
  • 虛懸鏡像(dangling images):沒(méi)有標(biāo)簽的鏡像,通常由鏡像更新產(chǎn)生
  • 使用 --digests 查看鏡像的簽名摘要(用于安全校驗(yàn))

高級(jí)用法:

# 查看所有鏡像(包括中間層鏡像)
docker images -a

# 只顯示鏡像ID(適合腳本處理)
docker images -q

# 過(guò)濾特定鏡像,比如只看 nginx
docker images nginx

# 顯示更詳細(xì)的信息(含創(chuàng)建時(shí)間、容器ID等)
docker images --no-trunc

docker tag:為鏡像添加標(biāo)簽

語(yǔ)法:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

典型場(chǎng)景:

1.為本地構(gòu)建的鏡像打上可推送的標(biāo)簽

docker tag my-app:1.0 registry.example.com/my-project/my-app:1.0

2.版本繼承(如從 1.0 到 1.0.1)

docker tag my-app:1.0 my-app:1.0.1

深度解析:

  • docker tag 實(shí)際上是創(chuàng)建一個(gè)輕量級(jí)的指針,不增加磁盤(pán)空間占用
  • 多個(gè)標(biāo)簽可以指向同一個(gè)鏡像 ID(證明它們共享相同的層)
  • 刪除標(biāo)簽不會(huì)影響鏡像內(nèi)容,只有當(dāng)所有標(biāo)簽都被刪除時(shí),鏡像才會(huì)被清理

2.2 鏡像獲取與推送命令

docker pull:從注冊(cè)表獲取鏡像

基礎(chǔ)用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

關(guān)鍵參數(shù):

選項(xiàng)說(shuō)明
--all-tags, -a拉取倉(cāng)庫(kù)中所有標(biāo)簽
--quiet, -q靜默模式,只輸出鏡像ID
--platform指定平臺(tái)架構(gòu)(arm64/x86_64)

底層原理:

  • 首先解析注冊(cè)表地址(默認(rèn) docker.io
  • 獲取鏡像清單(manifest)獲取層信息
  • 逐層拉取并驗(yàn)證(使用內(nèi)容尋址存儲(chǔ))
  • 最后組裝成完整鏡像
docker pull nginx

為了提高拉取速度,可以在配置文件中配置國(guó)內(nèi)鏡像源:

{
    "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com"
    ]
}

拉去nginx鏡像:

docker pull nginx

docker push:推送鏡像到注冊(cè)表

使用流程:

# 1. 登錄注冊(cè)表(首次需要)
docker login registry.example.com

# 2. 打標(biāo)簽(需要符合注冊(cè)表規(guī)范)
docker tag local-image:latest registry.example.com/project/image:1.2.3

# 3. 推送鏡像
docker push registry.example.com/project/image:1.2.3

必備條件:

  • 鏡像已打上目標(biāo)倉(cāng)庫(kù)的標(biāo)簽;
  • 已執(zhí)行 docker login 登錄對(duì)應(yīng)倉(cāng)庫(kù);
  • 倉(cāng)庫(kù)權(quán)限允許推送(尤其私有倉(cāng)庫(kù)需配置 ACL)。

安全實(shí)踐:

  • 始終使用語(yǔ)義化版本(如 1.2.3 而不是 latest)
  • 為敏感倉(cāng)庫(kù)配置基于角色的訪問(wèn)控制(RBAC)
  • 對(duì)生產(chǎn)鏡像使用簽名驗(yàn)證(Notary)

2.3鏡像的導(dǎo)入與導(dǎo)出

docker save/docker load:保存鏡像

語(yǔ)法:

# 保存鏡像
docker save -o my-image.tar my-app:1.2

# 加載鏡像
docker load -i my-image.tar

將指定文件保存至tar歸檔文件

導(dǎo)入使用docker命令導(dǎo)出的鏡像

先刪除原有的鏡像(如果直接load會(huì)覆蓋同名鏡像或者忽略)

docker rmi nginx:latest

保證進(jìn)入到tar的文件目錄:

cd /home/ubuntu/test

執(zhí)行:

docker load -i nginx.tar

參數(shù)詳解:

docker save --help

Options:
  -o, --output string   輸出文件路徑(默認(rèn) stdout)
  -q, --quiet           靜默模式(不顯示進(jìn)度條)

優(yōu)勢(shì):適用于生產(chǎn)環(huán)境鏡像備份、離線部署、內(nèi)網(wǎng)分發(fā)等場(chǎng)景。

docker export/docker import:導(dǎo)入鏡像

從歸檔文件中常創(chuàng)建鏡像,與export搭配使用

docker run -d --name my-nginx nginx:latest

docker export -o my-nginx-snapshot.tar my-nginx

docker import my-nginx-snapshot.tar my-new-nginx:custom

docker images

命令功能對(duì)比表

方式功能描述是否保留歷史層適用對(duì)象
save/load鏡像保存與加載(推薦用于備份鏡像)? 是鏡像
export/import容器導(dǎo)出與導(dǎo)入(用于遷移容器狀態(tài))? 否容器快照

2.4 鏡像構(gòu)建與優(yōu)化命令

docker build:構(gòu)建鏡像

標(biāo)準(zhǔn)構(gòu)建:docker build -t my-app:1.0 -f Dockerfile .

關(guān)鍵優(yōu)化參數(shù):

選項(xiàng)說(shuō)明
-t, --tag指定鏡像名稱(chēng)與標(biāo)簽
-f, --file指定 Dockerfile 路徑
--build-arg KEY=VALUE設(shè)置構(gòu)建參數(shù)
--no-cache強(qiáng)制不使用緩存重新構(gòu)建
--squash合并所有層(實(shí)驗(yàn)性功能)

高級(jí)實(shí)戰(zhàn):

# 多階段構(gòu)建:分離構(gòu)建環(huán)境和運(yùn)行環(huán)境
docker build -t frontend:prod --target production .

# 通過(guò) SSH 連接構(gòu)建(適用于私有依賴)
docker build --ssh default=id_rsa -t my-app .

dockerignore:構(gòu)建優(yōu)化關(guān)鍵

典型內(nèi)容:

# 忽略構(gòu)建不需要的文件
**/.git
**/node_modules
**/*.log
**/target
**/dist

# 但保留必要的配置
!Dockerfile
!pom.xml
!.mvn

作用原理:

  • 類(lèi)似 .gitignore,阻止不必要的文件進(jìn)入構(gòu)建上下文
  • 可減少 30%+ 的構(gòu)建上下文傳輸時(shí)間
  • 避免敏感文件被意外打包

對(duì)比效果:

場(chǎng)景是否添加 .dockerignore構(gòu)建耗時(shí)緩存命中率
未加 ignore?3min
添加合理 ignore?1min

2.5 鏡像清理與維護(hù)命令

docker rmi:刪除鏡像

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

安全刪除:

# 刪除指定標(biāo)簽的鏡像(如果無(wú)其他標(biāo)簽引用)
docker rmi my-app:1.0

# 刪除所有虛懸鏡像(<none>標(biāo)簽)
docker rmi $(docker images -f "dangling=true" -q)

docker image prune:智能清理

清理策略:

# 清理未被使用的鏡像(默認(rèn)僅刪除虛懸鏡像)
docker image prune

# 刪除所有未被容器引用的鏡像(謹(jǐn)慎使用)
docker image prune -a

清理效果對(duì)比:

命令可釋放空間安全性
docker image prune5-10%安全
docker image prune -a20-30%較高風(fēng)險(xiǎn)

docker history查看鏡像歷史信息

docker history [OPTIONS] IMAGE

docker image inspect查看鏡像詳細(xì)信息

docker image inspect [OPTIONS] IMAGE [IMAGE...]

案例:

docker image inspect nginx:latest

三、總結(jié)與進(jìn)階學(xué)習(xí)

Docker鏡像命令庫(kù)是Java開(kāi)發(fā)者必備的核心技能,希望本文能夠幫助你在實(shí)際項(xiàng)目中更高效地使用Docker技術(shù)。記住,掌握這些命令只是第一步,更重要的是理解背后的原理和最佳實(shí)踐,這樣才能在面對(duì)復(fù)雜的生產(chǎn)環(huán)境時(shí)游刃有余。

到此這篇關(guān)于從入門(mén)到實(shí)戰(zhàn)全面解析Docker鏡像常用命令的文章就介紹到這了,更多相關(guān)Docker鏡像常用命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 不使用sudo 執(zhí)行Docker命令的方法

    不使用sudo 執(zhí)行Docker命令的方法

    本篇文章主要介紹了不使用sudo 執(zhí)行Docker命令的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Docker 徹底刪除私有庫(kù)鏡像的操作

    Docker 徹底刪除私有庫(kù)鏡像的操作

    這篇文章主要介紹了Docker 徹底刪除私有庫(kù)鏡像的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Docker、Podman 和 Containerd 三者區(qū)別解析

    Docker、Podman 和 Containerd 三者區(qū)別解析

    Docker、Podman 和 Containerd 是三種流行的容器工具,它們都用于容器的創(chuàng)建、管理和運(yùn)行,但它們?cè)谠O(shè)計(jì)理念、功能和使用場(chǎng)景上有一些差異,這篇文章主要介紹了Docker、Podman 和 Containerd 三者區(qū)別,需要的朋友可以參考下
    2025-02-02
  • docker使用Dockerfile構(gòu)建鏡像的方法

    docker使用Dockerfile構(gòu)建鏡像的方法

    這篇文章主要介紹了docker使用Dockerfile構(gòu)建鏡像的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 在VS?Code中使用Docker容器的具體方法

    在VS?Code中使用Docker容器的具體方法

    這篇文章主要介紹了在VS?Code中使用Docker容器的具體方法,文中將基礎(chǔ)概念、環(huán)境配置、核心操作及高級(jí)應(yīng)用介紹的非常詳細(xì),通過(guò)學(xué)習(xí)可以了解Docker與VSCode集成的重要性,掌握Docker鏡像、容器的基本概念,需要的朋友可以參考下
    2025-11-11
  • Docker實(shí)現(xiàn)雙容器部署的方法步驟

    Docker實(shí)現(xiàn)雙容器部署的方法步驟

    本文介紹了Docker和DockerCompose實(shí)現(xiàn)雙容器部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Docker和Kubernetes中使用代理IP的操作方法

    Docker和Kubernetes中使用代理IP的操作方法

    在Docker和Kubernetes中使用代理IP很容易,只需要在Docker守護(hù)進(jìn)程和容器運(yùn)行時(shí)添加相應(yīng)的配置即可,這篇文章主要介紹了如何在Docker和Kubernetes中使用代理IP,需要的朋友可以參考下
    2023-07-07
  • docker nginx ssl設(shè)置的實(shí)現(xiàn)步驟

    docker nginx ssl設(shè)置的實(shí)現(xiàn)步驟

    本文主要介紹了docker nginx ssl設(shè)置的實(shí)現(xiàn)步驟,使用docker運(yùn)行nginx,配置代理,和ssl設(shè)置,進(jìn)行https訪問(wèn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • 運(yùn)行docker需要的權(quán)限分析

    運(yùn)行docker需要的權(quán)限分析

    在本篇文章了小編給各位分享的是一篇關(guān)于運(yùn)行docker需要的權(quán)限分析,有興趣的朋友們可以參考下。
    2020-03-03
  • Docker部署服務(wù)端口無(wú)法訪問(wèn)的排查與解決方法

    Docker部署服務(wù)端口無(wú)法訪問(wèn)的排查與解決方法

    在使用 Docker 部署 Grafana 的過(guò)程中,我遇到了一個(gè)比較常見(jiàn)的問(wèn)題:容器已經(jīng)啟動(dòng)成功,宿主機(jī)本地能訪問(wèn) Grafana 的 3000 端口,但在局域網(wǎng)中卻無(wú)法訪問(wèn),本文就為大家詳細(xì)介紹了排查與解決方法,需要的朋友可以參考下
    2025-11-11

最新評(píng)論

宁海县| 和平区| 济阳县| 谢通门县| 乌什县| 托克托县| 金坛市| 资阳市| 白河县| 渝北区| 陕西省| 霍城县| 建水县| 奉贤区| 周宁县| 天长市| 丰宁| 双牌县| 义马市| 陵水| 崇州市| 南陵县| 关岭| 松潘县| 嘉黎县| 崇州市| 沭阳县| 龙里县| 安新县| 财经| 张家口市| 辽阳市| 济源市| 故城县| 吴桥县| 白山市| 通河县| 金昌市| 通江县| 丰都县| 淅川县|