日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker_镜像

發布時間:2024/9/30 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker_镜像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏡像原理

鏡像是一種輕量級、可執行的獨立軟件包,用來打包軟件運行環境和基于運行環境開發的軟件,它包含運行某個軟件所需的所有內容,包括代碼、運行時、庫、環境變量和配置文件。

Docker鏡像底層原理

UnionFS (聯合文件系統)

UnionFS (聯合文件系統) : Union文件系統(UnionFS)是一種分層、輕量級并且高性能的文件系統,它支持對文件系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統下。Union文件系統是Docker鏡像的基礎。鏡像可以通過分層來進行繼承,基于基礎鏡像(沒有父鏡像),可以制作各種具體的應用鏡像。

特性:一次同時加載多個文件系統,但從外面看起來,只能看到一個文件系統,聯合加載會把各層文件系統疊加起來,這樣最終的文件系統會包含所有底層的文件和目錄

Docker鏡像加載原理

Docker鏡像加載原理:

docker的鏡像實際上由一層一層的文件系統組成,這種層級的文件系統UnionFS。

Kernel 操作系統內核 rootfs 根文件系統

bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引導加載kernel,
Linux剛啟動時會加載bootfs文件系統,在Docker鏡像的最底層是bootfs。這一層與我們典型的Linux/Unix系統是一樣的,包含boot加載器和內核。當boot加載完成之后整個內核就都在內存中了,此時內存的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs。

rootfs(root file system),在bootfs之上。包含的就是典型Linux系統中的/dev,/proc,/bin,/etc等標準目錄和文件。rootfs就是各種不同的操作系統發行版,比如Jbuntu,Centos等等。

對于一個精簡的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序庫就可以了,因為底層直接用主機的kernel,自己只需要提供rootfs就行了。由此可見對于不同的Iinux發行版,bootfs基本是致的,nootfs會有差別,因此不同的發行版可以公用bootfs。

分層的鏡像

例如下載一個tomcat,會發現有很多層

相對于下圖:

為什么Docker鏡像要采用這種分層結構

共享資源

如有多個鏡像都從相同的基礎鏡像構建而來,那么宿主機只需在磁盤上保存一份基礎鏡像,同時內存中也只需加載一份基礎鏡像,就可以為所有容器服務了。而且鏡像的每一層都可以被共享。

Docker鏡像的特點

Docker鏡像都是只讀的(當容器啟動時,一個新的可寫層被加載到鏡像的項部。這一層通常被稱作容器層,容器層之下的都叫鏡像層。

鏡像commit

docker run相關參數: -p 主機端口:docker 容器端口 -P 隨機分配端口(大寫的p) -i 交互 -t 終端

docker run -it -p 8888:80 httpd 也可以在后臺運行 docker run -d -p 8888:80 httpd


docker映射的端口是主機的8888端口,訪問一下

再來看下參數P的作用

docker run -it -P httpd

如果啟動有如下問題:

docker0: iptables: No chain/target/match by that name.

解決方法:

service docker restart 重啟docker后 iptables -L#在啟動firewalld之后,iptables被激活,此時沒有docker chain,重啟docker后被加入到iptable里面

再來查看下

啟動成功,查看一下運行情況

發現已經隨機分配了端口

接下來自己編輯下首頁并保存

docker exec -it c4d594d48b39 /bin/bash

安裝常用工具

更新apt 工具 : apt update 安裝vim編輯器: apt install vim

修改下首頁內容


再次訪問

docker commit提交容器使之成為一個新的鏡像 docker commit -m="提交的描述信息" -a="作者" 容器ID 要創建的目標鏡像名:[標簽名]

將修改后的容器保存為新的鏡像

docker commit -a="lemon" -m="change httpd" b4be1b82a099 lemon/httpd




docker commit提交容器副本使之成為一個新的鏡像

總結

以上是生活随笔為你收集整理的Docker_镜像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。