docker小白入门(三)—— docker数据卷,即docker容器的数据持久化与挂载

个人理解,数据卷是一个游离在docker之外的东西,他能持久化保存web项目上传的文件、图片、甚至是页面等;同时,因为访问的是docker容器之外的文件,所以也可以做到及时更新、文件共享、不影响原镜像、不会被docker删除等一系列“优点”;
数据卷的概念让我对docker有了一丝“怀疑”,但我有说不出问题点在哪…

挂载执行命令(docker -v)

下面是一个目录结构的截图,不涉及docker知识 ↓
在这里插入图片描述
如图,我在根目录下创建了“docker-v”文件夹(中间没有空格),在文件夹中创建ROOT子文件夹,ROOT中只有一个index.html,内容是“Hello Docker -v ! ”;

现在,在启动镜像生成容器的时候,将项目指到容器中,所以,执行过程是在run命令下的

docker run --name tomcat -p 8080:8080 -d -v /docker-v/ROOT:/usr/local/tomcat/webapps/ROOT tomcat
docker run --name tomcat1 -p 8081:8080 -d -v /docker-v/ROOT:/usr/local/tomcat/webapps/ROOT tomcat

这就启动了两个容器,-v后面的参数,左边是宿主机目录(linux目录),右边是容器目录,中间用冒号分割,不加空格;
含义是启动了一个名字为tomcat的镜像,两个容器将本身容器中的ROOT目录替换为了linux中的ROOT文件夹;

如果报错没有权限,如图所示
在这里插入图片描述
在执行run命令的时候加上 --privileged=true 参数,即

docker run -d -p 8081:8080 -v /docker-v/ROOT:/usr/local/tomcat/webapps/ROOT --privileged=true  mydocker

以上是数据卷的内容,那将数据持久化其实就是将mysql或其他数据库以数据卷的形式部署,以达到数据持久化的目的。

下面我将以mysql为例再次说明挂载功能

安装MySQL

docker pull mysql 5.7.22

运行容器化的MySQL

docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22

在这里插入图片描述

注意:
MySQL搭好之后,有一个比较坑的限制,就是执行sql的时候不能超过1M,这个时候要更改MySQL的配置文件,/etc/mysql/mysql.conf.d/mysqld.cnf,追加一行“max_allowed_packet= 128M”

我们拷贝出mysql的配置文件到宿主机,然后就可以把宿主机当数据卷来公用数据库

docker cp mysql:/etc/mysql .

注意后面一个点意味着当前文件夹,移动内容到上级目录

mv *.* ..

这个时候我们可以用数据卷来“创建”数据库

查看日志

docker logs mydocker

监控日志变化(类似 tail -f catalina.out)

docker logs -f mydocker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值