天津11选5开奖音乐:docker 鏡像命令

作者: 魯智深 分類: docker 發布時間: 2018-08-28 22:34

天津11选5中奖结果 www.ebzvaz.com.cn docker images 就是基本的查看鏡像命令

鏡像是什么?

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

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

鏡像就像千層餅

鏡像就像千層餅

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

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

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

rootf在bootfs之上,包含的就是典型linux系統中的/dev,/proc,/bin,/etc等標準目錄和文件,rootfs就是各種不同的操作系統發行版,比如ubuntu,centos等等。

rootfs bootfs

rootfs bootfs

問題:平時我們安裝的ubuntu虛擬機要好幾個G,為什么docker這里才83mb?

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

來下載一個redis試試

下載一個redis鏡像

下載一個redis鏡像

be8881be8156: Pull complete
d6f5ea773ca3: Pull complete
735cc65c0db4: Pull complete
787dddf99946: Pull complete
0733799a7c0a: Pull complete
6d250f04811a: Pull complete

上面pull下來的就是一層層的鏡像文件系統

文件系統

文件系統

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

鏡像commit操作

docker commit 提交容器副本使之成為新的鏡像,通常情況下我們直接運行一個鏡像id(ps:比如redis)生成一個容器,commit則是對redis容器進行自定義修改后在封裝成一個鏡像,通過生成的新的鏡像,也可以運行一個容器。

docker commit -m=”提交描述信息” -a=”作者” 容器id 要創建的目標鏡像名:[標簽名]

1
2
# 啟動鏡像-p指定端口映射 8888是docker對外暴露的端口,6379是redis默認端口
docker run -it -p 8888:6379 redis
docker指定端口啟動redis

docker指定端口啟動redis

1
2
# 查看正在運行的容器
docker ps
redis端口

redis端口

可以看到端口8888映射到了6379,也可以用隨機端口映射

1
2
# -P 隨機端口映射
docker run -it -P redis

重新打包一個鏡像

1
2
3
4
5
6
docker ps
docker commit -a="ayf" -m="redis dev" 容器id  ayfredis:1.0
docker images
docker run -it -p 7777:6379 鏡像名:標簽
或者后臺方式啟動
docker run -d -p 6666:6379 鏡像名:標簽
打包鏡像

打包鏡像

如果覺得我的文章對您有用,請隨意打賞。您的支持將鼓勵我繼續創作!

發表評論

電子郵件地址不會被公開。 必填項已用*標注