首页 > 其他分享 >Docker | 容器数据卷

Docker | 容器数据卷

时间:2022-10-10 10:47:11浏览次数:50  
标签:容器 nginx Linux 挂载 Docker 数据 docker

目录

什么是容器数据卷

从docker的理念说起,docker将应用和环境打包成一个镜像,运行镜像(生成容器)就可以访问服务了。

  • 如果数据都存在容器中,那么删除容器,数据就会丢失!需求:数据可以持久化
  • MySQL容器删了,就相当于删库了。需求:MySQL数据可以本地存储

容器之间可以有一个数据共享的技术,docker容器产生的数据同步到本地或者别的地方。

这就是数据卷技术,就是目录挂载,将容器内的目录,挂载到虚拟机上或者Linux上

目的:实现容器数据的持久化和同步操作。容器间也可以数据共享

数据的覆盖问题

  1. 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。
  2. 如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。

这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。

使用数据卷

方式一:直接使用命令挂载 -v

docker run -it -v 主机目录:容器内目录

docker run -it -v /home/test:/home centos /bin/bash

docker inspect 命令查看容器信息

测试挂载卷

1、在容器内部修改文件同步到Linux主机上

进入容器,在/home目录下创建123.sh文件

主机内可以查看在容器内部创建的文件

2、同样地,在Linux上修改挂在卷文件可以同步到容器内部

3、停止容器,修改Linux主机上的文件,同步到容器内

# 1、停止容器
exit

# 2、查看容器是否还在运行
docker ps

# 3、在Linux主机上修改对应目录的文件

# 4、启动容器并查看
  
  # 4.1、 查看历史运行的容器
  docker ps -a
  
  # 4.2、 启动容器
  docker start CONTAINER ID
  
  # 4.3、 进去容器
  docker attach CONTAINER ID
  
  # 4.4、 查看数据卷文件

方式二:Dockerfile文件

请查看下一章节

数据卷命令

docker volume

docker volume --help
Usage:  docker volume COMMAND
Manage volumes
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

Run 'docker volume COMMAND --help' for more information on a command.

具名挂载/匿名挂载

匿名挂载

-v 容器内路径
-P 自动分配端口号

docker run -d -P --name nginx02 -v /etc/nginx nginx

具名挂载

-v 卷名:容器内路径
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx

查看数据卷

方式一:docker inspect 容器ID

方式二:docker volume inspect juming-nginx

查看Linux主机docker工作目录 /var/lib/docker

所有docker容器内的卷,没有指定目录的情况下都是存放在 /var/lib/docker/volumes/xxx/_data 目录下

挂载三种方式

# 1
-v 容器内路径            # 匿名挂载

# 2
-v 卷名:容器内路径       # 具名挂载

# 3
-v 宿主机路径:容器内路径 # 指定路径挂载

扩展

给挂载的数据卷增加读写权限控制

通过 -v 容器内路径, ro rw 改变读写权限

  • ro readonly 只读
  • rw readwrite 可读写
# 一旦设置了容器权限,容器对我们挂载出来的内容就有限定了

docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:rw nginx

ro : 说明这个路径只能通过宿主机来操作,容器内无法操作

标签:容器,nginx,Linux,挂载,Docker,数据,docker
From: https://www.cnblogs.com/crstyl/p/16774787.html

相关文章

  • 数据安全之安全存储策略
    1.背景为了保障企业数据安全,信通院最近出台了数据安全管理认证,其中有一个审核条目是安全存储,要求将敏感字段在数据库加密存储,但是加密存储会引发一个问题:如何查询,如何被......
  • 小组项目数据流图
     ......
  • IDEA的Docker插件实战(Docker Image)
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本文是《IDEA的Docker插件实战》系列的第二篇,IDEA的Docker插件......
  • MySQL列的数据类型讲解
    数值tinyint十分小的数据1个字节smallint较小的数据2个字节mediumint中等大小的数据3个字节int标准的整数4个字节常用的intbigint较......
  • 为 Docker 安装 Portainer 控制台
    拉取Portainer dockerpullportainer/portainer启动Portainer容器dockerrun-d-p9000:9000--restart=always--nameprtainerportainer/portainer打......
  • Docker容器no route to host解决
    在使用Centos7上使用docker容器访问其他服务器的的端口时,发现容器无法访问外部服务器的端口,却可以ping通外部服务器的地址。其中Centos7中的防火墙也是关的,经过发现docker......
  • 学校数据填报系统,让数据统计工作更便捷_光点科技
    各地高校开学、举办活动、考试等,各种填报工作如潮水般袭来。然而,数据填报问题也成为不少高校教师的隐痛。高校老师:信息填写重复、审批流程繁琐、审批周期长等加重日常教学负......
  • 爬虫程序是如何抓取数据的?
    数据抓取现在是大多数企业公司都会使用的一种批量集成获取数据的技术手段。他能高效快捷的帮助企业获取想要的信息。也是有着人工无法比拟的优势。那么爬虫软件是怎么抓取数......
  • 安科瑞智能母线监控在数据中心的应用
    引言近年来,随着母线槽在建筑及工厂的配电中越来越广泛,母线槽场景运用的越多,随着数据中心建设的快速发展和更高需求,智能母线系统逐渐被应用于机房的末端配电中,具有电流小......
  • 【Pandas总结】第二节 Pandas 的数据读取_pd.read_csv()的使用详解(非常全面,推荐收藏)
    使用pandas进行数据读取,最常读取的数据格式如下:NO数据类型说明使用方法1csv,tsv,txt可以读取纯文本文件pd.read_csv2excel可以读取.xls.xlsx文件p......