目录
1. 什么是docker镜像?
docker镜像不包含Linux内核而有精简的Linux操作系统
-
-
-
我么安装操作系统ISO就可以理解为用C语言写的安装包(例如,微信安装包)
-
我们安装操作系统就好像我们安装微信一样
-
docker镜像也像ISO安装包,但是因为操作系统已将安装Linux内核,所以安装包可以直接使用
( 这个安装包只有Linux文件系统,而内核直接使用Linux系统本身就行)
-
docker 镜像是docker容器的静态视角,docker容器是docker镜像的运行状态
-
-
-
docker镜像--->程序(存储在硬盘里的代码)
-
进程-----> 把我们硬盘里的代码加载到内存运行
-
容器是docker镜像的引用,如何docker镜像删除,次镜像创建的容器也会失效
2.容器读写层(本质)
1. 容器其实是在镜像的最上面加了一层读写层,在运行容器里文件改动时,会先从镜像里要写的文件复制到容器自己的文件系统中(读写层)。
2. 如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。
3. 所以无论多少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作的,并不会修改镜像的源文件
4. 若想持久化这些改动,可以通过docker commit 将容器保存成一个新镜像
3.查看docker容器的工作目录
1 [root@linux-node4 diff]# docker run -itd --name=web1 -p 192.168.56.14:81:80 nginx:latest 2 [root@linux-node4 diff]# docker inspect web1 3 [ 4 { 5 # 存储驱动 6 "GraphDriver": { 7 "Data": { 8 "LowerDir": "/var/lib/docker/overlay2/51692869029f819494bb402dc70aa2869b8d1848c3b65c549a010a260e44cc13-init/diff:/var/lib/docker/overlay2/09fa1314e484781dfc1fb25a6cf5df2502fe35dea9025a373a3cb0202732ccce/diff:/var/lib/docker/overlay2/162ec5c9be56e5d718011c09ed087eda04b755e1a68bd1953c60f175e6635e68/diff:/var/lib/docker/overlay2/7c1b27ff59a397ae7d6bd106db579e90476f57bb1ecef9fcb1a6f1ad5ce43b7c/diff", 9 "MergedDir": "/var/lib/docker/overlay2/51692869029f819494bb402dc70aa2869b8d1848c3b65c549a010a260e44cc13/merged", 10 "UpperDir": "/var/lib/docker/overlay2/51692869029f819494bb402dc70aa2869b8d1848c3b65c549a010a260e44cc13/diff", 11 "WorkDir": "/var/lib/docker/overlay2/51692869029f819494bb402dc70aa2869b8d1848c3b65c549a010a260e44cc13/work" 12 }, 13 "Name": "overlay2" 14 }, 15 "NetworkSettings": { 16 "Ports": { 17 "80/tcp": [ 18 { 19 "HostIp": "192.168.56.14", 20 "HostPort": "81" 21 } 22 ] 23 }, 24 "MacAddress": "02:42:ac:11:00:02", 25 "Networks": { 26 "bridge": { 27 "Gateway": "172.17.0.1", 28 "IPAddress": "172.17.0.2", 29 "IPPrefixLen": 16, 30 } 31 } 32 } 33 } 34 ] 35 [root@linux-node4 diff]# cd /var/lib/docker/overlay2/51692869029f819494bb402dc70aa2869b8d1848c3b65c549a010a260e44cc13 36 [root@linux-node4 51692869029f819494bb402dc70aa2869b8d1848c3b65c549a010a260e44cc13]# ll # 查看docker工作目录都哪些内容 37 diff link lower merged work 38 diff # 读写层的差异(在读写层做的操作由这个容器单独管理) 39 merged # 引用docker进行中的文件系统 40 work # 项目工作目录