docker数据卷

目录

一.数据卷的作用

二.数据卷特点

三.数据卷操作


一.数据卷的作用


    用来实现容器与宿主机之间或容器与容器之间的数据共享
    对于一些容器我们我往往需要经常的修改配置文件,频繁的进入容器显得很麻烦。
    对于容器(mysql)中的数据,我们希望可以持久化到本地,作为一种备份。

二.数据卷特点


    数据卷可以在容器之间共享和复用
    对数据卷的修改会立即影响到对应容器
    对数据卷的修改不会影响镜像
    数据卷一直存在,即使容器被删除


实例1:
1.创建数据卷目录
mkdir /root/apps

2.运行Tomcat容器,并挂载数据卷到网页根目录
docker run -d -p 8081:8080 --name tomcat1 \
-v /root/apps:/usr/local/tomcat/webapps tomcat

3.访问测试

4.追踪查看容器日志,修改数据卷内容,看日志变化
docker logs -f tomcat1

cd /root/apps
mkdir ROOT
echo "<h1>www.tomcat.com</h1>" > /root/apps/ROOT/index.html

5.数据卷容器共享,并设置容器内目录只读
docker run -d -p 8082:8080 --name tomcat2 \
-v /root/apps:/usr/local/tomcat/webapps:ro tomcat

====================================

三.数据卷操作

1.自定义数据卷目录
docker run -v 本地目录路径:容器内路径

2.自动创建数据卷
docker run -v 数据卷名(自动创建):容器内路径

3.常用数据卷命令

查看数据卷
docker volume ls

创建数据卷
docker volume create data_vo1

查看某个卷详情
docker volume inspect data_vo1

删除数据卷
docker volume rm 数据卷名

删除未用的数据卷
docker volume prune 

4.实例演示

具名挂载:
docker run -d -p 8083:8080 --name tomcat3 \
-v data_vo1:/usr/local/tomcat/webapps tomcat

ls /var/lib/docker/volumes/data_vo1/_data

匿名挂载:
docker run -d -p 8084:8080 --name tomcat4 \
-v /usr/local/tomcat/webapps tomcat

=======================================
实例2:数据卷挂载mysql

1.下载mysql5.7镜像
docker pull mysql5.7

2.启动mysql容器,映射端口、设置密码、挂载自动数据卷
docker run -itd --name mysql1 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123.com \
-v mysqldata:/var/lib/mysql mysql:5.7

3.连接数据库,创建测试表

4.删除mysql1容器
docker stop mysql1
docker rm mysql1

5.查看数据卷是否还有数据
ls /var/lib/docker/volume/mysqldata/_data

6.新建容器,复用旧数据卷
删除所有容器
docker rm -f $(docker ps -aq)

docker run -itd --name mysql1 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123.com \
-v mysqldata:/var/lib/mysql mysql:5.7

7.连接数据库,查看旧数据表是否存在

8.再新建容器,以修改后的配置文件启动
删除所有容器
docker rm -f $(docker ps -aq)

docker run -itd --name mysql1 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123.com \
-v mysqldata:/var/lib/mysql \
-v mysqlconf:/etc/mysql mysql:5.7

=======================================
Dockerfile挂载数据卷

1.创建目录
mkdir /root/data_volume
cd /root/data_volume

2.创建Dockerfile
vim Dockerfile
FROM centos:7
VOLUME ["volume01","volume02"]
CMD echo "---end---"
CMD /bin/bash

3.构建镜像
docker build -t testvolume .

4.启动容器
docker run -itd --name testvolume1 testvolume /bin/bash

5.查看测试数据卷

====================================
数据卷容器:容器间数据双向同步共享

1.创建两个容器,数据卷共享testvolume1

docker run -itd --name testvolume2 --volumes-from testvolume1 testvolume

docker run -itd --name testvolume3 --volumes-from testvolume1 testvolume

2.进入容器,测试共享
docker exec -it testvolume2 /bin/bash
cd volume1
touch test2

docker exec -it testvolume3 /bin/bash
cd volume1
ls
touch test3

3.关闭testvolume1,查看数据是否在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值