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)測試
