docker数据卷

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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,查看数据是否在

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
45 5
|
6天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
37 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
10天前
|
Docker 容器
docker中查看已创建的数据卷
【10月更文挑战第16天】
25 3
|
10天前
|
存储 缓存 Docker
docker中挂载数据卷到容器
【10月更文挑战第16天】
18 2
|
10天前
|
Docker 容器
docker中创建命名数据卷
【10月更文挑战第16天】
11 2
|
11天前
|
存储 JSON 数据格式
docker中查看数据卷
【10月更文挑战第15天】
13 2
|
11天前
|
存储 Docker 容器
docker中使用命名数据卷
【10月更文挑战第15天】
11 2
|
11天前
|
存储 Docker 容器
docker中创建命名数据卷
【10月更文挑战第15天】
22 2
|
12天前
|
存储 Docker 容器
docker中挂载现有目录作为数据卷
【10月更文挑战第14天】
13 1
|
12天前
|
存储 Docker 容器
docker中创建一个命名的数据卷
【10月更文挑战第14天】
8 1