3 docker存储
docker存储
docker镜像有多个只读层叠加而成,启动容器是,docker会加载只读镜像层,并在镜像栈顶部添加一个读写层
如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本依然存在,只是被读写层中该文件的副本所隐藏此即“写时复制(cow)”机制.
volume于容器初始化之时即会创建,有base image提供的卷中的数据会于此期间完成复制;
volume的初衷时独立于容器的生命周期实现数据持久化,因此删除容器是既不会删除卷,也不会堆哪怕未被应用的卷做垃圾回收操作。
卷为docker提供了独立于容器的数据管理机制;
在容器中使用volums:分2类
1 docker-managed volums:
docker run -it -name web1 -v /data1 busybox:v1
2 bind-mount volume:
# docker run -it -name web2 -v host_dir:contaienr_dir busybox:v1
docker inspect web1
# docker run --name busy1 -it --rm -v /data/vloumes/b1:/data1 busybox
将虚拟机上的/data/vloumes/b1挂载到容器的/data1目录(容器内用df -h 可看到/data1目录挂载出来)
在虚拟机上的/data/vloumes/b1目录下新建index.html文件,在容器内的/data1目录下也可看到该index.html
2个或多个容器共享存储卷:
# docker run --name busy2 -it --rm -v /data/vloumes/b1:/data2 busybox
在busy2容器中也可看到index.html,其共享了/data/vloumes/b1