docker 实践四:数据管理

Posted xingyys

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 实践四:数据管理相关的知识,希望对你有一定的参考价值。

这篇是关于 docker 的数据管理。

注:环境为 CentOS7,docker 19.03。

一般容器中管理数据主要有两种方式:

  • 数据卷(Data Volumes):容器内数据直接映射到本地主机环境。
  • 数据卷容器(Data Volume Containers):使用特定容器维护数据卷。

主要来介绍如何创建数据卷,并且把本地的目录挂载到容器内,使用数据卷容器在容器和主机之间共享数据,并实现数据的备份和恢复。

数据卷

首先我们先来介绍下什么是数据卷:数据卷(Data Volume)是一个可供容器使用的特殊目录,是将主机操作系统目录直接映射进容器,类似于Linux的mount命令

数据卷可以提供很多很用的特性:

  • 数据卷可以在容器之间共享和重?, 容器间传递数据将变得?效与?便;
  • 对数据卷内数据的修改会?马?效, ?论是容器内操作还是本地操作;
  • 对数据卷的更新不会影响镜像, 解耦开应?和数据;
  • 卷会?直存在, 直到没有容器使?, 可以安全地卸载它。

创建数据卷

创建数据卷使用命令 docker volume create:

# docker volume create -d local test
test
# docker volume list
DRIVER              VOLUME NAME
local               9145a9036e96655189d81bd59c16181b1287de6c324cae08d4b5df32778926ff
local               ac107675a30b3be115772d545130ddf1ba5fd27bfcb62f93a2a533ad4403b616
local               d2760077757c8b9ef48f37a94032ed0f68a847e1fe0a6c84c16bcaba146fe25f
local               test

默认 volumes 的存放目录为 /var/lib/docker/volumes

docker volume 支持以下的子命令:

  • create :创建数据卷
  • inspect :查看数据卷的详细信息,输出格式为 JSON
  • ls :列出所有数据卷
  • prune :删除无用的数据卷
  • rm :删除指定数据卷

绑定数据卷

除了使用 volume 子命令来创建管理数据卷外,还可以正在创建容器是指定本地的任意目录挂载到容器作为数据卷,这也称为绑定数据卷。

在使用 docker [container] run 命令的时候,可以使用选项 --mount 来使用数据卷,它支持三种形式的数据卷:

  • volume: 普通数据卷, 映射到主机/var/lib/docker/volumes路径下,格式 type=bind,source=/path/on/host,destination=/path/in/container
  • bind: 绑定数据卷, 映射到主机指定路径下,格式 type=volume,source=my-volume,destination=/path/in/container,volume-label="color=red",volume-label="shape=round"
  • tmpfs: 临时数据卷, 只存在于内存中,格式 type=tmpfs,tmpfs-size=512M,destination=/path/in/container

它们通用的选项有:

  • src, source:源路径
  • dst, destination, target:目标路径
  • ro, readonly:true or false (default),是否只读
# mkdir /webapp
# docker run -d -P --name web --mount type=bind,source=/webapp,destination=/opt/webapp ubuntu
242a073a4f65aa3814c68147b7e3c5706834ac5a13b19d98d0b5c6ff5afa9c70

该命令等同于 -v 格式的命令,所以上述的命令等价于:

# docker run -d -P --name web -v /webapp:/opt/webapp ubuntu

如果要只读挂载就成这样:

# docker run -d -P --name web -v /webapp:/opt/webapp:ro ubuntu

注:本地?录的路径必须是绝对路径, 容器内路径可以为相对路径。 如果?录不存在, Docker会?动创建。

以上是关于docker 实践四:数据管理的主要内容,如果未能解决你的问题,请参考以下文章

Docker学习与实践

Docker 从入门到实践系列四 - Docker 容器编排利器 Docker Compose

Docker 从入门到实践系列四 - Docker 容器编排利器 Docker Compose

Docker基础

Docker入门实践之dokerfile编写

13-Docker 技术基本应用实践