(三) Docker安裝使用 鏡像

鏡像
what is image?
Docker鏡像是一個不包含內核而又精簡的操作系統
source?
docker.io
daoclod.io 推薦!
加速器:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://a9019f5b.m.daocloud.io
1
該腳本可以將 –registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。

work process?
當我們啓動一個新的容器時候,Docker會加載只讀鏡像,並在其上添加一個讀寫曾,並將鏡像中的目錄複製一份到/var/lib/docker/aufs/mnt/countainerID 下,我們可以使用chroot進入此目錄。如果運行中的容器修改一個已經存在的文件,會將該文件從下面的只讀層複寫到讀寫層,只讀層的這個文件就會被覆蓋,但是還會存在。就這實現了文件系統隔離,當刪除讀寫層的數據將會刪除,只讀鏡像不會變。
鏡像文件存儲結構?
docker相關文件放在/var/lib/docker目錄下
/var/lib/docker/aufs/diff 每層與其父層之間的文件差異
/var/lib/docker/aufs/layers 每層一個文件 記錄父層一直到根層之間的ID 大部分文件最後一行都表示繼承來自同一層
/var/lib/docker/aufs/mnt 聯合掛在點,從只讀層複製文件到可讀寫層的文件系統數據。

在建立鏡像時 每次讀寫操作 都被視作一種增量操作,即在原有的數據層上添加一個鋅層;所以一個鏡像會由若干個層組成。每次commit就會產生一個新的ID,就相當於在上一層增加了一層,通過這個ID對鏡像回滾。

Base 指令
鏡像操作
docker images # 顯示本地所有的鏡像列表

docker import # 從一個tar包創建一個鏡像,往往和export結合使用
docker build # 使用Dockerfile創建鏡像(推薦)
docker commit # 從容器創建鏡像

docker rmi # 刪除一個鏡像

docker load # 從一個tar包創建一個鏡像,和save配合使用
docker save # 將一個鏡像保存爲一個tar包,帶layers和tag信息 (docker save mysql >mysql.tar )
docker history # 顯示生成一個鏡像的歷史命令 docker tag # 爲鏡像起一個別名

注意:save的話是保存所有的層級 export則會缺失一些構建層級或者歷史記錄等 遷移最好用save

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章