[mydocker]---通過例子理解chroot 和 pivot_root

chroot

chroot是針對某個進(jìn)程,系統(tǒng)的其他部分依舊運行于老的root目錄中.
準(zhǔn)備工作, 先準(zhǔn)備好需要作為根目錄的地方, 并準(zhǔn)備busybox.

root@nicktming:~# mkdir /tmp/nicktming
root@nicktming:~# cd /tmp/nicktming
root@nicktming:/tmp/nicktming# mkdir bin
root@nicktming:/tmp/nicktming# which bash
/bin/bash
root@nicktming:/tmp/nicktming# cp /bin/bash bin
root@nicktming:/tmp/nicktming# cp /lib* .
root@nicktming:/tmp/nicktming# wget https://busybox.net/downloads/binaries/1.21.1/busybox-x86_64
root@nicktming:/tmp/nicktming# mv busybox-x86_64 busybox
root@nicktming:/tmp/nicktming# chmod +x busybox
root@nicktming:/tmp/nicktming# pwd
/tmp/nicktming
root@nicktming:/tmp/nicktming# ls
bin  busybox  lib  lib32  lib64  libx32

開始操作

----------------------------terminal 01-------------------------------
root@nicktming:~# chroot /tmp/nicktming /bin/bash
bash-4.3# pwd
/
bash-4.3# ./busybox ls -l
total 972
drwxr-xr-x    2 0        0             4096 Apr  5 13:05 bin
-rwxr-xr-x    1 0        0           973200 Jul  9  2013 busybox
drwxr-xr-x   21 0        0             4096 Apr  5 12:35 lib
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 lib32
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 lib64
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 libx32
bash-4.3# ./busybox echo "for testing" > test.txt
bash-4.3# ./busybox ls -l
total 976
drwxr-xr-x    2 0        0             4096 Apr  5 13:05 bin
-rwxr-xr-x    1 0        0           973200 Jul  9  2013 busybox
drwxr-xr-x   21 0        0             4096 Apr  5 12:35 lib
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 lib32
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 lib64
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 libx32
-rw-r--r--    1 0        0               12 Apr  5 14:26 test.txt
bash-4.3# ./busybox cat test.txt
for testing
// 可以看到chroot后只能在此根目錄進(jìn)行操作, 以外的目錄都訪問不到
bash-4.3# cd /tmp
bash: cd: /tmp: No such file or directory

可以看到chroot后在當(dāng)前terminal/tmp/nicktming已經(jīng)為根目錄了. 打開另外一個terminal.

----------------------------terminal 02-------------------------------
root@nicktming:~# cd /tmp/nicktming/
root@nicktming:/tmp/nicktming# pwd
/tmp/nicktming
root@nicktming:/tmp/nicktming# ls
bin  busybox  lib  lib32  lib64  libx32  test.txt
root@nicktming:/tmp/nicktming# cat test.txt 
for testing
root@nicktming:/tmp/nicktming# echo "test1" > test1.txt

新增加一個test1.txt

----------------------------terminal 01-------------------------------
bash-4.3# ./busybox ls -l
total 980
drwxr-xr-x    2 0        0             4096 Apr  5 13:05 bin
-rwxr-xr-x    1 0        0           973200 Jul  9  2013 busybox
drwxr-xr-x   21 0        0             4096 Apr  5 12:35 lib
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 lib32
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 lib64
drwxr-xr-x    2 0        0             4096 Apr  5 12:35 libx32
-rw-r--r--    1 0        0               12 Apr  5 14:26 test.txt
-rw-r--r--    1 0        0                6 Apr  5 14:43 test1.txt
bash-4.3# ./busybox cat test1.txt
test1
bash-4.3# exit
exit

pivot_root

全部內(nèi)容

mydocker.png

1. [mydocker]---環(huán)境說明
2. [mydocker]---urfave cli 理解
3. [mydocker]---Linux Namespace
4. [mydocker]---Linux Cgroup
5. [mydocker]---構(gòu)造容器01-實現(xiàn)run命令
6. [mydocker]---構(gòu)造容器02-實現(xiàn)資源限制01
7. [mydocker]---構(gòu)造容器02-實現(xiàn)資源限制02
8. [mydocker]---構(gòu)造容器03-實現(xiàn)增加管道
9. [mydocker]---通過例子理解存儲驅(qū)動AUFS
10. [mydocker]---通過例子理解chroot 和 pivot_root
11. [mydocker]---一步步實現(xiàn)使用busybox創(chuàng)建容器
12. [mydocker]---一步步實現(xiàn)使用AUFS包裝busybox
13. [mydocker]---一步步實現(xiàn)volume操作
14. [mydocker]---實現(xiàn)保存鏡像
15. [mydocker]---實現(xiàn)容器的后臺運行
16. [mydocker]---實現(xiàn)查看運行中容器
17. [mydocker]---實現(xiàn)查看容器日志
18. [mydocker]---實現(xiàn)進(jìn)入容器Namespace
19. [mydocker]---實現(xiàn)停止容器
20. [mydocker]---實現(xiàn)刪除容器
21. [mydocker]---實現(xiàn)容器層隔離
22. [mydocker]---實現(xiàn)通過容器制作鏡像
23. [mydocker]---實現(xiàn)cp操作
24. [mydocker]---實現(xiàn)容器指定環(huán)境變量
25. [mydocker]---網(wǎng)際協(xié)議IP
26. [mydocker]---網(wǎng)絡(luò)虛擬設(shè)備veth bridge iptables
27. [mydocker]---docker的四種網(wǎng)絡(luò)模型與原理實現(xiàn)(1)
28. [mydocker]---docker的四種網(wǎng)絡(luò)模型與原理實現(xiàn)(2)
29. [mydocker]---容器地址分配
30. [mydocker]---網(wǎng)絡(luò)net/netlink api 使用解析
31. [mydocker]---網(wǎng)絡(luò)實現(xiàn)
32. [mydocker]---網(wǎng)絡(luò)實現(xiàn)測試

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容