3.Docker容器的数据卷

93 阅读2分钟

场景

  • Docker容器删除后,在容器中的数据也会消失
  • Docker容器和外部机器不可以直接交换文件,网络不互通(可以通过数据卷)
  • 容器之间数据交换

数据卷的作用

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以挂在多个数据卷

配置数据卷

  • 创建启动容器时,使用 -v 参数设置数据卷 docker run ... -v 宿主机目录(文件):容器内目录(文件) 目录必须是绝对路径,如果目录不存在,会自动创建。可以挂载多个数据卷。

例(一个容器挂载一个目录):

docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash
# -v 后面的就是 宿主机目录(文件):容器内目录(文件)

docker run -it --name=c1 -v ~/data:/root/data_container centos:7
# 宿主机里面可以用~写,但是容器里面不可以

例(一个容器挂载多个目录):

docker run -it --name=c2 \
-v ~/data2:/root/data2 \
-v ~/data3:/root/data3 \
centos:7
# \ 表示换行,和原先的连在一起

例(多个容器挂载一个目录):

# 有 c3 和 c4 两个容器
docker run -it --name=c3 -v ~/data:/root/data centos:7
docker run -it --name=c4 -v ~/data:/root/data centos:7

数据卷容器

多容器进行数据交换

  1. 多个容器挂载同一个数据卷
  2. 数据卷容器

配置数据卷容器

1.创建启动c3数据卷容器,使用-v参数设置数据卷

docker run -it --name=c3 -v /volume centos:7 /bin/bash

2.创建启动c1,c2容器,使用 --volumes-from 参数设置数据卷

docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash