Docker | 容器数据卷详解

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: Docker | 容器数据卷详解

什么是容器数据卷


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


  • 如果数据都存在容器中,那么删除容器,数据就会丢失!需求:数据可以持久化


  • MySQL容器删了,就相当于删库了。需求:MySQL数据可以本地存储


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


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

image.png

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


数据的覆盖问题


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


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


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


使用数据卷


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


docker run -it -v 主机目录:容器内目录
docker run -it -v /home/test:/home centos /bin/bash

docker inspect 命令查看容器信息

image.png


测试挂载卷


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


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

image.png

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

image.png


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


image.png


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.

image.png


具名挂载/匿名挂载


匿名挂载


-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

image.png


查看数据卷


方式一:docker inspect 容器ID


image.png


方式二:docker volume inspect juming-nginx


image.png

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

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

image.png


挂载三种方式


# 1
-v 容器内路径            # 匿名挂载
# 2
-v 卷名:容器内路径       # 具名挂载
# 3
-v 宿主机路径:容器内路径 # 指定路径挂载


扩展


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


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


  • 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 : 说明这个路径只能通过宿主机来操作,容器内无法操作


目录
相关文章
|
3天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
12 2
|
1天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
2天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
3天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
3天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
3天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
13天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
9天前
|
关系型数据库 MySQL API
|
25天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
61 5
|
10天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
184 7
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库