docker数据卷
数据卷用于完成容器内数据的持久化
容器中对应路径的文件有修改会实时同步到宿主机
数据卷可在容器之间共享数据
数据卷的更改不会包含在镜像的更新中
数据卷的生命周期一直持续到没有容器使用它为止
- 直接使用命令挂载 -v
# 将容器内的/home文件夹映射到本机/home/test/docker
docker run -it --privileged=true -v /home/test/docker:/home centos /bin/bash
# 在宿主机上修改/home/test/docker目录下的文件 容器内的/home下的对应文件也会改变 反之亦然
# --privileged=true 建议加上
-
具名挂载和匿名挂载
-
匿名挂载:不指定宿主机映射路径
docker run -it -v /home centos /bin/bash docker volume ls # 查看当前所有镜像的挂载
-
具名挂载
docker run -it -v v1:/home centos /bin/bash docker volume ls docker volume inspect v1 # 查看该挂载的具体路径
-
区分具名和匿名
-v 容器内路径 # 匿名挂载 -v 挂载名:容器内路径 # 具名挂载 -v 宿主机路径:容器内路径 # 指定路径挂载
-
ro和rw区别
# ro权限只能通过宿主机来改变文件内容,容器内无法改变 # rw则宿主机和容器内部均可改变 -v 容器内路径:ro -v 容器内路径:rw eg: docker run -it --privileged=true -v /home/test/docker:/home centos:rw /bin/bash
-
查看具体挂载信息
docker inspect 容器id # 查看 Mounts 字段
-
继承挂载信息
--volumes-from 父类容器名/容器id eg: docker run -it --privileged=true --volumes-from 父类容器名/容器id /bin/bash
-
-
Dockerfile
- 创建一个dockerfile文件
# 指令都需要大写 每一个命令都是镜像中的一层 FROM centos VOLUME ["volume01", "volume02"] # 生成挂载数据卷的目录 CMD echo "-----------and-----------" CMD /bin/bash`
- 构建dockerfile
docker build -f dockerfile -t 镜像名称:版本号 .
- 运行镜像
- 查看镜像的挂载映射路径
docker inspect 容器id
- 创建一个dockerfile文件
-
数据卷容器
- 同步两个容器之间的数据
# 当前容器会与父容器的数据卷进行同步 # 即使父容器被停掉或者删除后 其他已经同步的数据不会消失 # 数据卷容器的生命周期一直持续到没有容器使用为止 --volumes-from 父容器
- 同步两个容器之间的数据