Docker基础:数据卷技术介绍

开发 项目管理
大家在生产环境使用Docker部署项目的时候,基本都需要进行数据持久化、或多个容器间进行数据共享,这个就需要容器的数据管理来进行操作。

​今天给大家简单聊聊Docker中的数据卷知识。

1.Docker数据管理

图片

大家在生产环境使用Docker部署项目的时候,基本都需要进行数据持久化、或多个容器间进行数据共享,这个就需要容器的数据管理来进行操作。

1.2 Docker数据持久化

Docker数据持久化就是容器中的数据不会随着容器的结束而随之结束,在Docker中如果需要实现数据的持久化,前提把数据从Docker容器挂载到宿主主机上去。

1.2 容器中数据管理的方式

数据卷(Data Volumes):容器内的数据直接映射到宿主主机环境

数据卷容器(Data Volume Containers):使用特定容器维护数据卷

2.数据卷的介绍

数据卷是一个可供容器内部使用的特殊目录,它将宿主主机的操作系统目录直接映射进容器内,类似于Linux系统中的 mount 操作。

2.1 数据卷作用

容器的持久化、容器间继承 + 共享数据

2.2 卷的概念

本质就是目录或文件,存在于一个或多个容器中,由docker挂载到容器中,但不属于联合文件系统,因此能够绕过合文件系统提供一些用于持续存储或共享数据的特性。卷的目的就是实现数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时同时删除其挂载的数据卷。

2.3 数据卷的特点

  • 数据卷可以在容器之间实现共享和重用,容器间传递数据将变的高效方便
  • 对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作
  • 对数据卷的更新不会影响Docker镜像,解耦了应用和数据
  • 数据卷的生命令周期不受容器的影响,除非你卸载它。

3.Docker数据卷常见的作用

  • 数据持久化:比如MySQL数据库,数据目录要挂载到宿主主机或者别的地方,否则MySQL容器删除你的数据也会随之删除。
  • 同步操作:比如我需要修改nginx的配置文件,不需要在进入容器内部,可以直接修改数据卷对应的文件就可以进行配置实时同步。
  • 容器间数据共享:多个容器之间需要数据共享的时候

4.操作数据卷

4.1 常用命令

docker volume 指令值

指令值:

  • create:创建一个volume
  • inspect:显示一个或多个volume的信息
  • ls :列出所有的volume
  • prune :删除未使用的volume
  • rm:删除一个或多个指定的volume

4.2 挂载数据卷

创建数据卷myvolume;

docker volume create myvolume

运行nginx容器;

docker run --name nginxtest -v myvolume:/usr/share/nginx/html -p 8000:80 -d nginx

图片

查看数据卷挂载信息;

docker volume inspect myvolume

图片

数据卷新增文件并查看容器内挂载的目录文件是否同步;

cd /var/lib/docker/volumes/myvolume/_data #进入容器卷目录
vi test.html #创建test.html 目录
ls

图片

进入容器查看目录是否正常同步;

docker exec -it nginxtest /bin/bash
cd /usr/share/nginx/html
ls

图片

容器内删除test.html 查看myvolume是否也删除了;

rm test.html

图片

图片

责任编辑:武晓燕 来源: IT技术分享社区
相关推荐

2022-03-10 08:24:17

Docker容器SaaS

2022-05-25 16:48:25

数据卷Docker

2011-02-25 09:37:35

2022-10-14 07:07:46

架构

2022-09-01 07:15:48

docker匿名挂载

2010-03-16 11:16:52

无线ZigBee技术

2016-09-20 21:32:16

DockerLinux Names

2016-09-20 22:04:55

Docker Linux Names

2015-08-26 11:27:26

DockerDeviceMappe分层镜像

2010-11-01 06:43:21

PowerShell

2014-04-22 09:34:12

大数据

2013-05-23 14:51:22

机房布线机房布线技术布线标准

2015-01-12 15:07:56

SQLAlchemy数据库开发OpenStac

2011-06-21 14:42:37

ECMAScriptJavaScript

2009-09-22 09:27:29

Hibernate P

2009-09-28 10:24:58

Hibernate基础

2023-09-07 07:13:51

2009-12-31 09:54:04

ADO.NET数据访问

2010-04-07 15:18:18

数据无线传输技术

2011-08-24 11:30:53

智能基础设施康普
点赞
收藏

51CTO技术栈公众号