前言

在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着 Container 的结束而结束),需要将数据从宿主机挂载到容器中。

目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中:

  • volumes:Docker 管理宿主机文件系统的一部分,默认位于 /var/lib/docker/volumes 目录中;
  • bind mounts:意为着可以存储在宿主机系统的任意位置;(比较常用的方式)
  • tmpfs:挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统;(一般都不会用的方式)

Volume 的基本使用

# 创建一个自定义容器卷
docker volume create edc-nginx-vol

# 查看所有容器卷
docker volume ls 

# 查看指定容器卷详情信息
docker volume inspect edc-nginx-vol


## 查看docker容器的配置
docker inspect  45ef055db93b

创建匿名volume

##
docker run -d -P -name test-container -v /webapp training/webapp python app.py

##

此时将创建一个将容器/webapp路径映射到外部某个随机路径(由docker运行时指定)的data volume,当运行中的容器向 /webapp路径下写入文件时,将会持久化到 "宿主机" 的路径下,这个"母机"的路径将可以使用 docker inspect test-container 查出来,,形如:

##
/var/lib/docker/volumes/78f5a620e6ac9e7\
17fc2ba5cb26391318316c5b1bb4cba39fb6a60\
118f8a4f5b/_data

第二种创建方式为创建一个指定路径的volume,将宿主机路径指定到具体的路径,创建语句如下:

docker run -d -P -name test-container -v /src/webapp:/opt/webapp training/webapp python app.py