1 数据卷简介

为了解决:

  1. 容器中的文件会随容器删除而删除
  2. 宿主机与容器之间不能相互访问文件
  3. 容器与容器之间不能相互访问文件

Docker引入了数据卷机制(volumes),
实现了 主机与容器 或 容器与容器 共享文件

2 数据卷的使用

在使用docker run 命令时添加 -v 参数,就可以创建并挂载一个到多个数据卷到当前运行的容器中

  1. sudo docker run -dit --name [容器名字] -v [宿主机目录/文件]:[容器目录/文件] [镜像名称] [命令(可选)]

3 数据卷容器的使用

将宿主机的某个目录,使用容器的方式来表示,然后其他的应用容器将数据保存在这个容器中,达到大批量应用数据同时存储的目的

(1) 创建一个数据卷容器

注意:

  1. 容器数据卷目录要这样写/docker_data, 名称随便取, 不要加~, 这只是个虚拟目录名, 它不在宿主机上!!!
  2. 数据卷容器不启动
  1. sudo docker create -v [容器数据卷目录] --name [容器名字] [镜像名称]
  2. # 示例:
  3. sudo docker create -v /docker_data --name vcontainer ubuntu:16.04

Docker数据管理 - 图1

(2) 创建两个容器, 同时挂载数据卷容器

  1. sudo docker run -dit --volumes-from [数据卷容器名] --name [容器名字] [镜像名称] [命令(可选)]
  2. # 示例:
  3. sudo docker run -dit --volumes-from vcontainer --name ccc1 ubuntu:16.04 /bin/bash
  4. sudo docker run -dit --volumes-from vcontainer --name ccc2 ubuntu:16.04 /bin/bash

在ccc2容器中操作, 在ccc1容器中会同步数据
但在宿主机中操作, 在ccc1和ccc2容器中均不会同步
因为数据是保存在数据卷容器内,并没有保存到宿主机的文件目录中
Docker数据管理 - 图2
Docker数据管理 - 图3

4 数据操作指令

(1) 查看所有数据卷

  1. sudo docker volume ls

Docker数据管理 - 图4

(2) 查看数据卷详情

  1. sudo docker volume inspect [VOLUME NAME]

Docker数据管理 - 图5
进入该目录, 可以看到里面存的是什么数据
Docker数据管理 - 图6