- 我们之前就了解到了,docker的镜像并非是一个整体镜像,而是一个分层存储,每一层都是在前一层的基础上进行的修改,而容器也是这样的,是多层存储的
-
我们现在来启动一个镜像
$ docker run --name webnginx -d -p 80:80 nginx
-
-p
:表示将容器内的80端口映射到物理机的80端口 -
-d
:后台运行
-
- 当运行起来后,我们浏览器访问 localhost,会看到nginx的标志
- 到这我们是对刚拉下来的镜像我们没有任何的修改,现在我们将对nginx的欢迎界面进行初始化
-
docker进入容器更改nginx配置文件
$ docker exec -it webnginx bash $ root@b5c597a4f124:/# echo '<h1>HELLO DOCKER<h1/>' > /usr/share/nginx/html/index.html $ docker restart webnginx
- 再次访问localhost,会看到我们更改后的信息
- 到这我们就已经开始更改了容器内的
/usr/share/nginx/html/index.html
文件,这就会造成现在的镜像和之前的镜像的存储层已经发生了改变,docker也可以检测到这个更改 -
docker 检测差异
[qidai@qidai-pc ~]$ docker diff webnginx C /run A /run/nginx.pid C /usr C /usr/share C /usr/share/nginx C /usr/share/nginx/html C /usr/share/nginx/html/index.html C /var C /var/cache C /var/cache/nginx A /var/cache/nginx/client_temp A /var/cache/nginx/fastcgi_temp A /var/cache/nginx/proxy_temp A /var/cache/nginx/scgi_temp A /var/cache/nginx/uwsgi_temp C /root A /root/.bash_history
- 上面除了cache的改变和pid文件的创建,发生更改的文件已经显而易见了
- 目前就是在原有刚拉取过来的镜像的基础上发生了一层改变,并形成了一个新的镜像,如果现在这个nginx的欢迎界面正是我们需要的,我们就可以将此镜像进行保存
- 如下是我画的一个图,相信到这我们就很直观的理解了docker是一层层的存储层的变化来构成一个dcoker镜像
- 对于docker镜像的保存,下面说