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

Docker 鏡像結(jié)構(gòu)詳解

 更新時(shí)間:2025年10月09日 16:48:24   作者:維爾切(wiltjer)  
Docker鏡像是由一系列層(layers)組成的,理解Docker鏡像的結(jié)構(gòu)對(duì)于有效地構(gòu)建、共享和管理Docker鏡像至關(guān)重要,本文給大家介紹Docker鏡像結(jié)構(gòu)的相關(guān)知識(shí),感興趣的朋友一起看看吧

Docker 鏡像結(jié)構(gòu)

一、鏡像與容器之間的關(guān)系

  • 鏡像:是靜態(tài)的、只讀的文件系統(tǒng),包含運(yùn)行容器所需的程序、庫、資源、配置等
  • 容器:是鏡像的運(yùn)行實(shí)例,是動(dòng)態(tài)的進(jìn)程,擁有自己的文件系統(tǒng)、網(wǎng)絡(luò)、進(jìn)程空間等資源
  • 關(guān)系
    • 鏡像是容器的基礎(chǔ),容器依賴于鏡像。
    • 容器啟動(dòng)時(shí),會(huì)在鏡像之上添加一個(gè)可寫的“容器層”,所有修改都發(fā)生在這一層。
    • 鏡像通過 json 文件描述運(yùn)行時(shí)的配置(如啟動(dòng)命令、環(huán)境變量等),Docker 守護(hù)進(jìn)程解析該文件并啟動(dòng)容器

二、鏡像結(jié)構(gòu)

1、基礎(chǔ)鏡像(base 鏡像)

  • 不依賴于其他鏡像,從 scratch 開始構(gòu)建
  • 以此為基礎(chǔ)鏡像,進(jìn)行擴(kuò)展
  • 通常是各種 Linux 發(fā)行版(如 CentOS、Ubuntu)的鏡像
  • 不同發(fā)行版的區(qū)別在于 rootfs(用戶空間),而內(nèi)核共享宿主機(jī)的 Kernel

2、鏡像分層

  • 鏡像由多個(gè)只讀層組成,每層代表一個(gè)修改(如安裝軟件、添加文件)
  • 層次結(jié)構(gòu)示例
| touch /galaxy/cy | Image |
| mkdir /galaxy    | Image |
| CentOS:7         | Base Image |
| Docker Host      | Kernel |

3、容器層

  • 容器啟動(dòng)時(shí),在鏡像頂部添加一個(gè)可寫層
  • 用戶看到的是聯(lián)合文件系統(tǒng),上層文件覆蓋下層同名文件
  • 容器層的寫入操作使用寫時(shí)復(fù)制機(jī)制

三、Docker 鏡像構(gòu)建

1、三種構(gòu)建方式對(duì)比

方式說明優(yōu)點(diǎn)缺點(diǎn)
docker commit基于運(yùn)行中的容器創(chuàng)建鏡像簡(jiǎn)單快捷容易出錯(cuò),效率低且可重復(fù)性弱,不安全
基于本地模板導(dǎo)入從模板文件導(dǎo)入鏡像快速導(dǎo)入已有系統(tǒng)不靈活、不易定制
dockerfile通過腳本定義鏡像層次透明、可重復(fù)、易于維護(hù)推薦方式

2、docker commit

通過在運(yùn)行的容器內(nèi)安裝軟件、配置環(huán)境,再將容器的“當(dāng)前狀態(tài)”打包為新鏡像,本質(zhì)是“快照式構(gòu)建”

centos:7中安裝vim-common

先基于centos7運(yùn)行容器,容器名為cy,并使用-it生成終端進(jìn)入容器

[root@docker ~]# docker run --name dc -it centos:7 /bin/bash

在容器中安裝vim-common

[root@8f3a60b20edb /]# yum -y install vim-common

退出容器后,使用docker commit將v1容器打包為鏡像

[root@docker ~]# docker commit dc centosdc:7
[root@docker ~]# docker images | grep centosdc

3、基于本地模板導(dǎo)入

直接從操作系統(tǒng)模板文件(如OpenVZ模板)導(dǎo)入鏡像,模板文件通常為壓縮包(如tar.gz),包含完整的rootfs和基礎(chǔ)配置

導(dǎo)入ubuntu:12.04模板

下載模板

從OpenVZ官方地址(http://openvz.org/Download/templates/precreated)下載ubuntu-12.04-x86-minimal.tar.gz

導(dǎo)入為鏡像

[root@docker ~]# cat ubuntu-12.04-x86-minimal.tar.gz | docker import - ubuntu:12.04

驗(yàn)證鏡像

[root@docker ~]# docker images

4、Dockerfile構(gòu)建

Dockerfile是一個(gè)文本文件,包含一系列“指令(Instruction)”,每一條指令對(duì)應(yīng)鏡像的一層——指令描述了該層的構(gòu)建操作(如安裝軟件、復(fù)制文件、配置環(huán)境)。通過docker build命令執(zhí)行Dockerfile,可自動(dòng)化、可重復(fù)地構(gòu)建鏡像,解決了docker commit的“不透明、不可追溯”問題

編寫 Dockerfile

[root@docker ~]# vim Dockerfile

Dockerfile 內(nèi)容

# 第一行必須指定,基礎(chǔ)鏡像信息
FROM centos:7
# 維護(hù)者信息
MAINTAINER docker@example.com
# 鏡像操作指令
RUN yum install -y httpd
EXPOSE 80
# 容器啟動(dòng)執(zhí)行指令
CMD ["/usr/sbin/httpd"]

執(zhí)行構(gòu)建命令

[root@docker ~]# docker build -t httpd:wil /root/

構(gòu)建過程:

  1. 下載centos7鏡像
  2. 添加鏡像構(gòu)建者信息
  3. 基于centos7鏡像啟動(dòng)容器,安裝httpd軟件,安裝完畢后將容器打包為鏡像
  4. 基于上一步生成的鏡像啟動(dòng)容器,將80端口打開,打開后將容器打包為鏡像
  5. 基于上一步生成的鏡像啟動(dòng)容器,添加容器啟動(dòng)后需要執(zhí)行的指令,再打包為鏡像

查看構(gòu)建歷史

[root@docker ~]# docker history httpd:wil

使用DockerFile文件構(gòu)建完鏡像以后,Docker會(huì)把構(gòu)建過程中的每一層臨時(shí)鏡像進(jìn)行緩存。在構(gòu)建新鏡像時(shí),可以直接使用之前緩存的鏡像層,這樣能加速鏡像的構(gòu)建

四、Dockerfile 語法詳解

指令說明示例
FROM指定基礎(chǔ)鏡像FROM centos:7
MAINTAINER維護(hù)者信息(已逐漸被 LABEL 替代)MAINTAINER cy@example.com
LABEL元數(shù)據(jù)鍵值對(duì)LABEL version="1.0"
RUN構(gòu)建過程中執(zhí)行命令RUN yum install -y httpd
COPY復(fù)制宿主機(jī)文件到鏡像COPY app.py /app/
ADD類似 COPY,支持 URL 和自動(dòng)解壓ADD app.tar.gz /app/
WORKDIR設(shè)置工作目錄WORKDIR /app
VOLUME創(chuàng)建掛載點(diǎn)VOLUME /data
EXPOSE聲明容器端口EXPOSE 80
ENV設(shè)置環(huán)境變量ENV APP_HOME /app
CMD容器啟動(dòng)命令(可被覆蓋)CMD ["/bin/bash"]
ENTRYPOINT容器啟動(dòng)命令(不可被覆蓋)ENTRYPOINT ["/app/start.sh"]
USER指定運(yùn)行用戶USER nobody

五、總結(jié)

要點(diǎn)說明
鏡像與容器鏡像是靜態(tài)的模板,容器是運(yùn)行實(shí)例
分層結(jié)構(gòu)鏡像由多個(gè)只讀層組成,容器層可寫
基礎(chǔ)鏡像從 scratch 構(gòu)建,提供 rootfs
構(gòu)建方式推薦使用 Dockerfile,透明、可重復(fù)
Dockerfile 指令每條指令對(duì)應(yīng)一層,支持緩存
緩存機(jī)制加速構(gòu)建,可通過 --no-cache 禁用

到此這篇關(guān)于Docker 鏡像結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Docker 鏡像結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker打包一個(gè)Python腳本的實(shí)現(xiàn)方法

    Docker打包一個(gè)Python腳本的實(shí)現(xiàn)方法

    本文主要介紹了Docker打包一個(gè)Python腳本的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • docker的卷映射手動(dòng)指定位置的操作方法

    docker的卷映射手動(dòng)指定位置的操作方法

    Docker中手動(dòng)指定卷映射位置通過綁定掛載實(shí)現(xiàn),使用-v或--mount參數(shù),語法清晰,支持更多選項(xiàng),注意宿主機(jī)目錄存在性、權(quán)限和SELinux限制,本文介紹docker的卷映射手動(dòng)指定位置的操作方法,感興趣的朋友一起看看吧
    2025-02-02
  • docker集群Error response from daemon: rpc error問題

    docker集群Error response from daemon: rpc&

    文章描述了在Docker集群中遇到的錯(cuò)誤信息,并提供了解決辦法,解決辦法包括配置安全組,將Docker Swarm的所有節(jié)點(diǎn)IP添加到安全組中
    2025-01-01
  • docker安裝的mysql修改配置文件方式

    docker安裝的mysql修改配置文件方式

    本文描述了在修改MySQL容器配置文件后遇到的異常問題,并給出了解決方法,原來是因?yàn)閕ptables規(guī)則沖突導(dǎo)致,重啟docker后問題解決
    2026-04-04
  • Docker安裝kafka并創(chuàng)建topic進(jìn)行消息通信過程

    Docker安裝kafka并創(chuàng)建topic進(jìn)行消息通信過程

    本文介紹了如何使用Docker容器化技術(shù)來安裝和配置Apache?Kafka,并詳細(xì)介紹了如何創(chuàng)建topic進(jìn)行消息通信,通過Docker和Docker?Compose兩種方式,可以方便地搭建Kafka集群,并進(jìn)行消息的發(fā)布和訂閱
    2025-12-12
  • docker-compose network名稱定義解讀

    docker-compose network名稱定義解讀

    文章詳細(xì)介紹了Docker Compose網(wǎng)絡(luò)名稱的生成規(guī)則,包括沒有自定義網(wǎng)絡(luò)名、定義后綴和定義前綴的情況,通過設(shè)置環(huán)境變量`COMPOSE_PROJECT_NAME`,可以更友好的命名網(wǎng)絡(luò)
    2026-03-03
  • docker?save與docker?export的區(qū)別

    docker?save與docker?export的區(qū)別

    docker?save和docker?export都能導(dǎo)出鏡像包,本文主要介紹了docker?save與docker?export的區(qū)別,試圖搞清楚docker?save和docker?export的功能是什么?適用于什么應(yīng)用場(chǎng)景?感興趣的可以了解一下
    2022-03-03
  • Docker中編碼和時(shí)區(qū)設(shè)置不生效問題排查小結(jié)

    Docker中編碼和時(shí)區(qū)設(shè)置不生效問題排查小結(jié)

    本文主要介紹了在Docker容器中排查編碼和時(shí)區(qū)設(shè)置不生效的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Docker執(zhí)行(進(jìn)入)鏡像實(shí)踐

    Docker執(zhí)行(進(jìn)入)鏡像實(shí)踐

    本文介紹了如何使用Docker命令查看、安裝、刪除鏡像,以及如何運(yùn)行鏡像并設(shè)置自動(dòng)重啟,還詳細(xì)介紹了如何進(jìn)入Docker容器并進(jìn)行一些常見操作,如設(shè)置MySQL事務(wù)超時(shí)時(shí)間,最后,文章鼓勵(lì)大家參考并支持腳本之家
    2025-12-12
  • Docker案例分析:搭建Redis服務(wù)

    Docker案例分析:搭建Redis服務(wù)

    這篇文章主要介紹了Docker案例分析:搭建Redis服務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論

神农架林区| 九江市| 松阳县| 南召县| 蓝山县| 桃园县| 丰顺县| 东乡| 苗栗市| 安仁县| 万全县| 安阳县| 汾阳市| 满洲里市| 饶阳县| 沙河市| 大荔县| 贡觉县| 德昌县| 汽车| 怀来县| 柏乡县| 安国市| 城固县| 县级市| 曲麻莱县| 门头沟区| 龙江县| 广南县| 荣成市| 镇巴县| 无锡市| 银川市| 云霄县| 沁阳市| 通江县| 册亨县| 肃北| 广灵县| 土默特左旗| 安仁县|