什么是容器数据卷
如果数据都在容器中,那么我们删除容器,数据也会丢失。 总结:容器的持久化和同步操作,容器间也是可以数据共享的。
使用数据卷
方式一:直接使用命令来挂载
docker run -it -v 主机目录:容器目录[root@lxt ~]# docker run -it -v /home/test:/home centos /bin/bash
可通过docker inspect 容器id 验证
Source:主机地址
Destination:docker容器内的地址
匿名挂载和具名挂载
匿名(只写容器内的路径,没有写容器外的路径!)docker run -d -P --name nginx01 -v /etc/nginx nginx查看所有的volume的情况docker volume ls具名docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
所有的docker容器内的卷, 没有指定目录的情况下都是在:/var/lib/docker/volumes/xxxx/_data
拓展:
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginxdocker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx# ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!
方式二:Dockerfile
FROM centosVOLUME ["volume01","volume02"] #匿名挂载CMD echo "----end----"CMD /bin/bash
第二行代码会在镜像中生成两个文件夹volume1,volume2,这两个文件夹就是生成镜像的时候自动挂载的数据卷目录,宿主机在默认位置也会有文件夹与之对应。
构建代码
docker build -f /home/xxxxxx/dockerfile1 -t lxt/centos:1.0 .
数据卷容器
多个容器之间共享数据
并不是容器中的所有文件都共享,只是被挂载的文件才能实现共享。删除centos1容器后,centos2的文件并不会删除,删除centos1容器中的文件才会使得centos2的文件删除。
