docker笔记5-数据卷


一、数据卷

1.1 定义

Docker 容器数据卷是一个可用于存储数据的特殊目录,存在于一个或多个容器的指定位置。这些数据卷可以绕过容器的文件系统,提供持久化的数据存储,以便多个容器之间容器与宿主机之间共享数据。

1.2 本质

实现数据的可持久化
在这里插入图片描述

1.3 特点

  • 持久性: 数据卷的内容在容器重启后仍然存在。
  • 共享性: 可以轻松地在多个容器之间共享数据。
  • 独立于容器生命周期: 数据卷的生命周期独立于容器,即使容器被删除,数据卷也可以保留。

二、使用数据卷

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

# 端口映射
docker run -it -p 主机端口:容器内端口
# 目录映射
docker run -it -v 主机目录:容器内目录

执行以下命令,实现主机目录:/home/ceshi与容器目录/home的映射,这样这两个目录的所有操作都会同步,即使容器已经停止运行。

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

可以通过以下命令查看容器目录是否挂载成功:

docker inspect 容器Id

以下内容说明挂载成功:

"Mounts": [
            {
                "Type": "bind",
                "Source": "/home/mysql/conf",
                "Destination": "/etc/mysql/conf.d",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/home/mysql/data",
                "Destination": "/var/lib/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

扩展:

#通过 -v 容器内路径:ro或者rw 改变读写权限
ro:readonly   #只读
rw: read write #可读可写

一旦这个设施了容器权限,容器对我们挂载出来的内容就有限定了
[root@lisa volumes]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
[root@lisa volumes]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

# ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!

三、案例

2.1 安装Mysql

目的:实现mysql中数据的持久化
首先,下载mysql镜像

docker pull mysql

需要配置mysql密码:

 参考官网hub 
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d 

启动mysql容器,设置数据卷挂载并配置mysql密码

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

可以使用数据库连接工具连接启动的mysql容器:
在这里插入图片描述下面是连接成功:
在这里插入图片描述

四、匿名挂载和具名挂载

4.1 匿名挂载

不指定挂载到主机上的路径,只指定容器内部需要挂载的目录。

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

查看所有数据卷情况

docker volume ls

在这里插入图片描述

4.2 具名挂载

给挂载位置添加名字,即具名挂载。

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
注意:这里 -v juming-nginx:  代表直接给定名字,但是没有指定路径,如果在juming-nginx前面你添加/,则代表指定路径

在这里插入图片描述

查看数据卷配置信息

docker volume inspect 数据卷id

在这里插入图片描述所有容器内的卷,在没有指定目录的情况下都是挂载在:/var/lib/docker/volumes/xxxx/_data 目录下。

五、三种挂载方式

挂载方式描述
匿名挂载-v 容器内部路径
具名挂载-v 卷名:容器内部路径
指定路径挂载-v /宿主机路径:容器内部路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值