Docker中容器数据卷详解

 更新时间:2022年11月17日 08:25:22   作者:甜点cc  
这篇文章主要介绍了Docker中容器数据卷详解的相关资料,需要的朋友可以参考下

什么是容器数据卷

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

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

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

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

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

数据的覆盖问题

如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。

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

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

使用数据卷

方式一:直接使用命令挂载 -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 : 说明这个路径只能通过宿主机来操作,容器内无法操作

到此这篇关于Docker中容器数据卷详解的文章就介绍到这了,更多相关Docker容器数据卷内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker容器中运行flume及启动不输出运行日志问题

    Docker容器中运行flume及启动不输出运行日志问题

    这篇文章主要介绍了 Docker容器中运行flume及启动不输出运行日志问题及解决方法,需要的朋友参考下吧
    2018-03-03
  • win10家庭版安装Docker的方法步骤

    win10家庭版安装Docker的方法步骤

    这篇文章主要介绍了win10家庭版安装Docker的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 详解Docker守护进程的配置及日志

    详解Docker守护进程的配置及日志

    这篇文章主要介绍了详解Docker守护进程的配置及日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • docker-compose安装及执行命令

    docker-compose安装及执行命令

    Docker Compose是一个用来定义和运行复杂应用的Docker工具,这篇文章主要介绍了docker-compose安装方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • 详解Docker Registry之删除镜像、垃圾回收

    详解Docker Registry之删除镜像、垃圾回收

    本篇文章主要介绍了详解Docker Registry之删除镜像、垃圾回收,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Docker创建一个mysql容器并保存为本地镜像

    Docker创建一个mysql容器并保存为本地镜像

    本篇文章主要介绍了Docker创建一个mysql容器并保存为本地镜像 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 在docker中配置Oracle11g的过程

    在docker中配置Oracle11g的过程

    这篇文章主要介绍了在docker中配置Oracle11g ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 迁移Docker中MySQL容器的全过程

    迁移Docker中MySQL容器的全过程

    在这篇文章中,我们将介绍如何将在 Docker 中运行的 MySQL 容器从一台机器(我们称之为A机器)迁移到另一台机器(我们称之为B机器),这个过程主要包括五个步骤:提交容器为镜像,保存镜像为 tar 包等,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • docker network create命令的具体使用

    docker network create命令的具体使用

    docker network create命令用于创建一个新的网络连接,本文就来详细的介绍一下docker network create命令的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 深入理解docker容器中的uid和gid

    深入理解docker容器中的uid和gid

    这篇文章主要介绍了深入理解docker容器中的uid和gid,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09

最新评论