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

Docker | 容器数据卷

时间:2022-10-10 10:01:03浏览次数:68  
标签:容器 目录 nginx 挂载 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 : 说明这个路径只能通过宿主机来操作,容器内无法操作


我是 甜点cc

热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。

希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。

本文由mdnice多平台发布

标签:容器,目录,nginx,挂载,Docker,数据,docker
From: https://www.cnblogs.com/all-smile/p/16774608.html

相关文章

  • jsp操作本地数据库
    @目录环境准备检查驱动下载驱动配置Tomcat配置idea开始上手测试连接主界面显示列出全部学生模块实现条件查询学生模块实现添加学生模块实现条件删除学生模块实现条件修改学......
  • 如何优雅的备份MySQL数据?看这篇文章就够了
    大家好,我是一灯,今天一块学习一下如何优雅安全的备份MySQL数据?1.为什么要备份数据先说一下为什么需要备份MySQL数据?一句话总结就是:为了保证数据的安全性。如果我们把数......
  • Windows下Docker Desktop折腾
    虽然自己有一些docker基础,但一堆东西很难在租的服务器里面部署。所以尝试在win下部署一下docker,也算是打破舒适圈了...提高一下自己的动手能力,感觉做云原生这块离不开docke......
  • docker gitlab 用户密码重置
    代码按照顺序dockerexec-itgitlabbashsu-gitls进入控制台--以下根据版本两条都试试gitlab-railsconsoleproduction或者gitlab-railsconsole-eproduction......
  • MatrixOne从入门到实践05——数据类型介绍
    MatrixOne从入门到实践——数据类型介绍MatrixOne的数据类型是和MySQL数据类型定义一致,可以参考:https://dev.mysql.com/doc/refman/8.0/en/data-types.html在MatrixOne建......
  • 资料保存——容器和虚拟机
    在学习hadoopyarn时发现涉及到容器技术,容器技术又时常与虚拟机比较https://blog.csdn.net/weixin_45531197/article/details/122940952https://blog.csdn.net/weixin_44......
  • 数据库基础知识
    为什么要使用数据库数据保存在内存优点:存取速度快缺点:数据不能永久保数据保存在文件优点:数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便......
  • Docker 容器日志查看
    Docker容器日志查看 1、容器日志查看命令Usage:dockerlogs[OPTIONS]CONTAINERFetchthelogsofacontainerOptions:--detailsShowextra......
  • Docker 容器内部文件和容器外部文件互相copy
    Docker容器内部文件和容器外部文件互相copy 有时需要将Linux服务器上的文件copy到容器的某个目录(比如:配置文件),有时将容器中的某个文件(比如:日志文件)copy到Linux服务......
  • Docker 容器设置为 自动重启
    Docker容器设置为自动重启有时Docker服务出现异常,或者服务器出现异常,需要重启Docker服务或者服务器;如果希望有一部分基础的或者常用的容器,在服务或者服务器重启的时候......