Docker原理之rootfs
生活随笔
收集整理的這篇文章主要介紹了
Docker原理之rootfs
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前情回顧
https://www.cnblogs.com/lioa/p/12666497.html上篇文章的“容器里的進程看到的文件系統”章節把ns.c加上mount 函數后,同時調用CLONE_NEWNS啟用namespace,我們宿主機啟動的容器進入后看到的文件系統就是掛載的/tmp,這樣做到了文件系統的隔離。
docker文件系統
而當我們進入一個docker容器內部時,幾乎看到的是一個完整的linux根目錄系統,又是如何做到的呢?
chroot
change root file system。來一個/bin/bash的移花接木。
## home目錄創建abc目錄
cd
mkdir -p abc
## 在abc目錄下創建lib,lib64,bin目錄
mkdir -p abc/{bin,lib,lib64}
## 將bash命令拷貝abc對應目錄
cp -v /bin/{bash,ls} abc/bin
## 把 bash 命令需要的所有 so 文件,也拷貝到 abc 目錄對應的 lib 路徑下。找到 so 文件可以用 ldd 命令
T=$HOME/abc
list="$(ldd /bin/ls | egrep -o '/lib.*.[0-9]')"
for i in $list; do cp -v "$i" "${T}${i}"; done
## 切換
$ chroot $HOME/abc /bin/bash
## 設置環境變量
export PATH=$PATH:/bin
## 查看根目錄
ls /
rootfs
rootfs 根文件系統,即docker的鏡像。docker 鏡像是利用UnionFS + layer 的概念。
參考
https://time.geekbang.org/column/article/17921
目錄
https://www.cnblogs.com/lioa/p/12664686.html
總結
以上是生活随笔為你收集整理的Docker原理之rootfs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ibex 处理器架构简介
- 下一篇: 一、Oracle目录介绍