docker在容器中管理数据主要有两种方式:
-
数据卷(Volumes)
-
挂载主机目录(Bind mounts)
数据卷
为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。
数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
数据卷 可以在容器之间共享和重用
对 数据卷 的修改会立马生效
对 数据卷 的更新,不会影响镜像
数据卷 默认会一直存在,即使容器被删除
创建数据卷
docker volume create my-vol
查看所有数据卷
docker volume ls
删除一个 volume
docker volume rm my-vo l
创建并进入容器
docker run -it --name c1 centos
创建容器并后台运行
docker run -itd --name c2 centos
删除所有容器包括在运行的容器
docker rm -f $(docker ps -aq)
挂载数据卷
在用 docker run 命令的时候,使用 --mount 标记来将 数据卷 挂载到容器里。在一次 docker
run 中可以挂载多个 数据卷 。
docker run -itd \
--name 容器名字 \
--mount source=数据卷名称,target=容器中的对应目录 \
镜像名称
查看数据卷的具体信息
docker inspect 数据卷名字
挂载目录
挂载之前必须保证该目录存在,否则挂载失败(宿主机目录)
方法一
docker run -it \
--name c2 --mount \
type=bind,source=/usr/local/java,target=/aa centos
方法二
Docker run -it \
--name c2 \
-v /usr/local/java:/aa \
Centos
创建数据卷容器
docker run -itd --name name -v dir centos
挂载数据卷容器
docker run -itd --name name --volumes-from db_data centos