docker数据卷

Docker数据卷是实现容器数据持久化的关键,即使容器删除,数据卷仍会保留。它们可以在容器间共享,支持即时更改并排除在镜像更新之外。推荐通过`docker run`命令挂载数据卷,官方建议尽量目录挂载而非文件挂载。数据卷类型包括宿主机数据卷和命名数据卷。此外,还可以使用数据卷容器来集中管理多个容器的数据。在实际应用中,如MySQL8和Nginx,可以通过挂载数据卷确保配置和数据的持久化。
摘要由CSDN通过智能技术生成

数据卷:为了使容器运行过程中的数据可以持久化,而不是删除容器之后数据就没有了。数据卷由docker挂载到容器,docker不会在删除容器时删除挂载的数据卷。

  1. 数据卷可以在容器之间共享或重用数据
  2. 数据卷中的更改可以立即生效(html等文件可以立即生效,配置文件还是要重启容器)
  3. 数据卷中的更改不会包含在镜像的更新中(只会更新当前容器)
  4. 数据卷默认会一直存在,即使容器被删除
  5. 数据卷的生命周期一直持续到没有容器使用它

两种方式:

  • Data Volumes 容器内数据直接映射到本地主机环境
  • Data Volume Containers 使用特定容器维护数据卷

挂载数据卷最好通过run启动容器(create/start命令创建启动容器后,再挂载数据卷相当麻烦)
docker官网推荐尽量进行目录挂载而不是文件挂载

数据卷的类型:

宿主机数据卷

直接在宿主机的文件系统中但是容器可以访问(推荐)

docker run -v /宿主机绝对路径目录:/容器内目录 镜像名 

mysql8挂载卷

docker run -itd --name mysql8 --restart always --privileged=true -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -v /data/mysql:/var/lib/mysql mysql:8.0 --character-set-server=utf8 --collation-server=utf8_general_ci 
#mysql8远程连接需要进入容器重新修改配置
docker exec -it mysql8 bash
mysql -uroot -p
#修改加密规则 
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; 
#更新一下用户的密码 
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
#刷新权限
FLUSH PRIVILEGES;

查看宿主机的文件
在这里插入图片描述
容器目录权限

#ro:readonly 只读
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
#rw:readwrite 可读可写
docker run -it -v /宿主机绝对路径目录:/容器内目录:rw 镜像名

注意

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

命名的数据卷

磁盘上Docker管理的数据卷,但是这个卷有个名字

#命名为test-nginx的数据卷
docker run -itd --name nginx -p 80:80 -v test-nginx:/etc/nginx nginx:1.19 

在这里插入图片描述
查看数据卷,Mountpoint是路径
在这里插入图片描述

匿名数据卷

磁盘上Docker管理的数据卷,因为没有名字想要找到不容易,Docker来管理这些文件

docker run -itd --name nginx -p 80:80 -v /etc/nginx nginx:1.19 
数据卷容器

在这里插入图片描述
需要一个centos系统作为数据卷容器

docker pull centos:7.8.2003
docker run -d --name data-volume -v /data/nginx:/usr/share/nginx/html -v /data/mysql:/var/lib/mysql centos:7.8.2003

虽然docker ps查看data-volume容器是处于停止状态,但是不影响挂载
宿主机上查看
在这里插入图片描述
启动Nginx

docker run -itd --name nginx -p 80:80 --volumes-from data-volume nginx:1.19 

启动mysql

docker run -itd --name mysql8 --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --volumes-from data-volume mysql:8.0 --character-set-server=utf8 --collation-server=utf8_general_ci 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值