首页 > 其他分享 >Docker数据管理

Docker数据管理

时间:2024-08-04 22:39:31浏览次数:14  
标签:容器 宿主机 目录 数据管理 挂载 Docker 数据 docker

一、容器的数据管理介绍

1.Docker容器的分层

容器的数据分层目录

  • LowerDir: image 镜像层,即镜像本身,只读

  • UpperDir: 容器的上层,可读写 ,容器变化的数据存放在此处

  • MergedDir: 容器的文件系统,使用Union FS(联合文件系统)将lowerdir 和 upperdir 合并完成后给容器使用,最终呈现给用户的统一视图

  • WorkDir: 容器在宿主机的工作目录,挂载后内容会被清空,且在使用过程中其内容用户不可见

范例: 查看指定容器数据分层

docker  inspect

2.哪些数据需要持久化

有状态的协议

有状态协议就是就通信双方要记住双方,并且共享一些信息。而无状态协议的通信每次都是独立的,与上一次的通信没什么关系。

"状态”可以理解为“记忆”,有状态对应有记忆,无状态对应无记忆

  • 左侧是无状态的http请求服务,右侧为有状态

  • 下层为不需要存储的服务,上层为需要存储的部分服务

3.容器数据持久保存方式

如果要将写入到容器的数据永久保存,则需要将容器中的数据保存到宿主机的指定目录

Docker的数据类型分为两种:

  • 数据卷(Data Volume): 直接将宿主机目录挂载至容器的指定的目录 ,推荐使用此种方式,此方式较常用

  • 数据卷容器(Data Volume Container): 间接使用宿主机空间,数据卷容器是将宿主机的目录挂载至一个专门的数据卷容器,然后让其他容器通过数据卷容器读写宿主机的数据 ,此方式不常用

二、数据卷(data volume)

1.数据卷(data volume)

数据卷使用场景

  • 数据库

  • 日志输出

  • 静态web页面

  • 应用配置文件

  • 多容器间目录或文件共享

数据卷的特点

  • 数据卷是目录或者文件,并且可以在多个容器之间共同使用,实现容器之间共享和重用对数据卷更改数据在所有容器里面会立即更新。

  • 数据卷的数据可以持久保存,即使删除使用使用该容器卷的容器也不影响。

  • 在容器里面的写入数据不会影响到镜像本身,即数据卷的变化不会影响镜像的更新

  • 依赖于宿主机目录,宿主机出问题,上面容器会受影响,当宿主机较多时,不方便统一管理

  • 匿名和命名数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,会拷贝到新初始化的数据卷中

据卷使用方法

启动容器时,可以指定使用数据卷实现容器数据的持久化,数据卷有三种

  • 指定宿主机目录或文件: 指定宿主机的具体路径和容器路径的挂载关系

    • 容器和真机共用空间, 把容器的文件挂载到 真机的文件夹

  • 匿名卷: 不指定数据名称,只指定容器内目录路径充当挂载点,docker自动指定宿主机的路径进行挂载

  • 命名卷: 指定数据卷的名称和容器路径的挂载关系 和匿名卷在一个目录 , 只是取了一个自定义的名字

docker run 命令的以下格式可以实现数据卷

-v, --volume=[host-src:]container-dest[:<options>]
<options>
ro 从容器内对此数据卷是只读,不写此项默认为可读可写
rw 从容器内对此数据卷可读可写,此为默认值

方式1

#指定宿主机目录或文件格式: 
-v   <宿主机绝对路径的目录或文件>:<容器目录或文件>[:ro]  #将宿主机目录挂载容器目录,两个目录
都可自动创建

例子:

docker run -it --name c1 -v /data:/opt centos:7

 方式2

#匿名卷,只指定容器内路径,没有指定宿主机路径信息,宿主机自动生成/var/lib/docker/volumes/<卷ID>/_data目录,并挂载至容器指定路径
-v <容器内路径

例子:

docker run -it --name c2 -v /data centos:7
docker inspect 76d714e6fa84
#查看宿主机路径

 方式3

#命名卷将固定的存放在/var/lib/docker/volumes/<卷名>/_data
-v <卷名>:<容器目录路径>
#可以通过以下命令事先创建,如可没有事先创建卷名,docker run时也会自动创建卷
docker volume create <卷名>

例子:

docker run -d  -p 80:80 --name nginx01 -v  vol1:/usr/share/nginx/html nginx

docker rm 的 -v 选项可以删除容器时,同时删除相关联的匿名卷

-v, --volumes   Remove the volumes associated with the container

管理卷的操作

docker volume COMMAND
Commands:
 create     Create a volume
 inspect     Display detailed information on one or more volumes
  ls         List volumes
 prune       Remove all unused local volumes
  rm         Remove one or more volumes

 

标签:容器,宿主机,目录,数据管理,挂载,Docker,数据,docker
From: https://www.cnblogs.com/hxqwe/p/18339047

相关文章

  • Go 静态编译及在构建 docker 镜像时的应用
    Go语言具有跨平台和可移植的特点,同时还支持交叉编译,可以在一个系统上编译出运行在另一个系统上的二进制可执行文件,这是因为Go在编译时支持将依赖的库文件与源代码一起编译链接到二进制文件中,所以在实际运行时不再需要依赖运行环境中的库,而只需要一个二进制文件就可以运行,在构建......
  • 第十二章 元数据管理(重点)
    语境关系图:1.元数据概念:元数据从技术的角度叫元数据从业务的角度叫数据资源管理目录技术=元数据业务=数据资源管理目录但是并不是数据资产目录如果没有可靠的原数据,组织就不知道它拥有什么数据,数据表示什么,数据来自何处,如何在系统中流转,谁有权访问,或者对于数据保......
  • docker入门学习
    docker入门学习前言一、简介1.docker是什么2.docker特点及应用3.docker与虚拟机的区别4.docker相关概念理解5.docker网络二、docker安装1.安装2.配置镜像三、docker命令1.服务相关命令2.容器相关命令3.镜像相关命令四、搭建服务测试1.搜索tomcat镜像2.pulltomcat3.查......
  • 谈谈你对docker的理解
    Docker是一种容器化技术,主要用于轻量级、可移植的应用程序打包和部署。1.容器化技术的基本概念容器:容器是一种轻量级的、独立运行的应用程序打包方式,包含运行所需的所有依赖项(代码、运行时环境、系统工具、库等),并且在任何环境中均能保持一致运行。Docker:Docker是当......
  • 【保姆级讲解Docker容器 ! ! !】
    ......
  • gogs的安装和使用(docker)
    1.docker安装gogs1.1拉取gogs镜像dockerpullgogs/gogs#也可改为自己需要的版本号 1.2创建存储目录mkdir/root/gogs 1.3 运行镜像 dockerrun--name=gogs-d-p10022:22-p13000:3000-v/root/gogs:/datagogs/gogs1.3.1指令解析 --name=gogs:指......
  • Docker常用容器安装
    Docker安装安装docker(centos)docker引擎安装官网地址:InstallDockerEngineonCentOS|DockerDocumentation手动安装#卸载旧版本sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-l......
  • Docker 常用命令总结
    前言本文介绍Docker常用的一些命令,Docker常用配置可参考Docker实用配置技巧。Docker管理查看服务端和客户端版本dockerversion查看服务端和客户端配置和参数信息dockerinfo镜像操作Docker镜像可以看作一个模板。查看本地镜像列表dockerimages使用-q......
  • Docker Hub 和 registry-1.docker.io 的关系
     registry-1.docker.io是DockerHub的底层注册表(Registry)地址,用于存储和管理Docker镜像。在Docker中,一个注册表(Registry)是存储Docker镜像的地方,而registry-1.docker.io是DockerHub的注册表地址之一。DockerHub和registry-1.docker.io的关系:DockerHub:Do......
  • 更换yum源,安装docker与拉取镜像
    1.更换yum源备份:mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup更换:wget-O/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repo运行  yummakecache 生成缓存2.CentOS7(使用yum进行安装docker)st......