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会?动创建。

原文地址:https://www.cnblogs.com/xingyys/p/11397939.html

时间: 2024-10-11 13:51:31

docker 实践四:数据管理的相关文章

深入浅出Docker(四):Docker的集成测试部署之道

1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方式,给开发团队建立一套可以复用的开发环境,让开发环境可以通过Image的形式分享给项目的所有开发成员,以简化开发环境的搭建.但是,在没有Docker技术之前就已经有类如Vagrant的开发环境分发技术,软件开发者一样可以创建类似需求的环境配置流程.所以在开发环境方面,Docker技术的优势并不能很好

Docker实践(4)—network namespace与veth pair

network namespace 创建network namespace # ip netns add blue # ip netns list blue 添加网口到namespace 先创建veth # ip link add veth0 type veth peer name veth1 在当前namespace可以看到veth0和veth1 # ip link list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stat

Docker容器的数据管理

Docker容器的数据管理 什么是数据卷(Data Volume)? 数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或者多个容器提供访问 数据卷设计的目的,在于数据的永久化,它完全独立与容器的生存周期,因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理 数据卷(Data Volume)的特点 数据卷在容器启动时初始化,如果容器使用的镜像文件在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中 数据卷可以在容器之间共

Docker实践(3)—浅析device mapeper的thin provoision

thin provision是在 kernel3.2 中引入的.它主要有以下一些特点: (1)允许多个虚拟设备存储在相同的数据卷中,从而达到共享数据,节省空间的目的: (2)支持任意深度的快照.之前的实现的性能为O(n),新的实现通过一个单独的数据避免了性能随快照深度的增加而降低. (3)支持元数据存储到单独的设备上.这样就可以将元数据放到镜像设备或者更快的SSD上. 上面3个特性正是devicemapper支持docker存储镜像的关键特性. 使用lvm管理thin provisioning

Docker实践(1)—入门

tutorial centos6.5环境. # yum install docker-io -y 会依赖安装libcgroup,lxc,lxc-libs 启动docker # service docker start Starting cgconfig service: [确定] Starting docker:        [确定] 获取最新的docker image # docker pull centos:latest 运行image # docker run -i -t centos

Linux及安全实践四——ELF文件格式分析

Linux及安全实践四——ELF文件格式分析 一.ELF文件格式概述 1. ELF:是一种对象文件的格式,用于定义不同类型的对象文件中都放了什么东西.以及都以什么样的格式去放这些东西. 二.分析一个ELF文件 以一个最简单的helloworld程序为例 1. ELF文件头 使用工具查看ELF文件头:readelf -h obj 在/usr/include/elf.h中可以找到文件头结构定义: 大小总共为64字节,换算成十六进制为0x40.在十六进制代码中找到前0x40字节,即为文件头信息部分(阅

Docker实践(一)

Docker实践 什么是LXC? LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性.相当于C++中的NameSpace.容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求.与传统虚拟化技术相比,它的优势在于: 与宿主机使用同一个内核,性能损耗小: 不需要指令级模拟: 不需要即时(Just-in-tim

【实践报告】Linux实践四

Linux内核分析 实践四——ELF文件格式分析 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: 可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 共享目标文件:共享库.

Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享

架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第一期主题:容器实践.Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化.可移植性是CI/CD,DevOps,微服务的重要实现技术.但目前技术还不够成熟,在生产实践中会遇到不少坑.本期参与小组交流的是国内较早采用 Docker 实践的公司. 参与嘉宾:沪江架构师黄凯.滴滴架构师田智伟.蘑菇街架构师张振华.蘑菇街运维架构师向靖.七牛技术总监袁晓沛.扇贝技术总监丁彦 第一轮:自由交流 沪江黄凯:大家好,我是来自沪江的 Ja