Docker学习笔记(四)

一、容器数据卷

引子:现在数据都在容器中,一旦容器被删除,数据就会丢失,如何实现数据持久化?MySQL,容器一旦被删,MySQL数据丢失。。删库跑路?

容器之间需要有一种数据共享的技术,在Docker容器中产生的数据可以同步到本地!====>这就是卷技术,目录的挂载:将我们容器内的目录,挂载到Linux上面!

总结:为什么需要数据卷?解决容器的持久化和同步操作!容器间也是可以数据共享的。

二、使用数据卷

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

  这里我在宿主机home目录下创建ceshi 文件夹,在容器内home目录创建dockerceshi文件夹,使用docker run -it -v /home/ceshi:/home/dockerceshi centos /bin/bash  实现centos容器启动并挂载

docker run -it -v  宿主机目录:容器内目录

  查看是否挂载成功 docker inspect 容器id

 

 

  下面我们测试数据卷的同步功能。在宿主机home/ceshi 文件夹下新增内容,是否可以同步到docker容器中

 

 可以看到信息已经成功同步到docker 容器中了,那么我们再来看下在docker容器中添加内容是否可以同步到宿主机

 

  可以看到这样也是可行的,不管是在宿主机还是docker容器中,都可以实现数据的同步。这种我们叫做双向绑定,也间接实现了数据的持久化

三、docker 数据卷实战之mysql 

  下载mysql5.7

docker pull mysql:5.7

  开启数据挂载

#--name 重命名
#mysql5.7 重命名后的名字
#-d 后台运行
#-p 指定端口
#3310 宿主机端口
#3306 docker容器端口
#-v 挂载命令
#-e 环境配置命令 #MYSQL_ROOT_PASSWORD mysql 访问密码 #mysql:
5.7 容器名和版本号 docker run --name mysql5.7 -d -p:3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

   测试连接mysql (防火墙一定要开通3310端口)

 

   测试数据同步

   容器删除,数据是否还在?答案是肯定的,这就是实现了数据的持久化!

  

    

四、Docker 具名挂载和匿名挂载

#匿名挂载 -v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx

#查看所有卷的情况
docker volume ls

#具名挂载 -v 挂载名:容器内路径
docker run -d -P --name nginx02 -v juming-nginx:/ect/nginx nginx

#指定路径挂载 -v 宿主机路径:docker容器路径
docker run -d -P --name nginx03 -v /home/ceshi:/home/dockerceshi nginx

#查看卷存放路径
docker volume inspect juming-nginx

#挂载只读权限(容器路径后添加:ro)
docker run -d -P --name nginx03 -v /etc/nginx:ro nginx

#挂载读写权限(默认)
docker run -d -P --name nginx03 -v /ect/nginx:rw nginx

所有的卷都存放在这个路径下

Dockerfile(用来构建docker镜像的构建文件!命令脚本),通过dockerfile 挂载镜像

#创建文件夹
mkdir docker-test-volume
#编写脚本文件 vim dockerfile1
#生成镜像
#build 构建命令
#-f dockerfile的地址
#-t 镜像名
docker build -f dockerfile1 -t centos:2.0 .
#查看生成的镜像
#启动镜像查看,是否挂载成功
docker run -it 容器id

docker inspect 容器id查看元数据挂载信息

五、数据卷容器

容器与容器间数据同步

#启动容器一
docker run -it --name docker02 d446c1cbcc71
#启动容器二并挂载在容器一上
docker run -it --name docker03 --volumes-from docker02 d446c1cbcc71

测试容器二是否可以同步容器数据,可以看到文件顺利同步

 

posted @ 2021-07-02 14:25  十二A~  阅读(50)  评论(0)    收藏  举报