1. 什么是容器数据卷
docker主要是将应用和环境打包成一个镜像。
数据:如果数据都存在容器中, 那么容器删除,数据就会丢失 需求:可以将数据持久化!
如:MySQL,容器删了,数据也就没了!需求:MySQL数据可以存储在本地!
希望:容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!
这就是卷技术!目录的挂载,将我们容器内的目录,挂载到linux上。
2. 使用数据卷
方式1:直接使用命令来挂载 -v
docker run -it -v 主机目录:容器内的目录#测试docker run -it -v /home/ceshi:/home/centos /bin/bash#启动之后,我们可以通过docker inspect 容器id

好处:我们以后修改只需要在本地修改即可,容器内会自动同步。
3. 实战—安装MySQL
思考:MySQL的数据持久化的问题
- 启动MySQL,完成数据挂载 ```shell [root@wjh ~]# docker run -d -p 8080:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 —name=mysql1 mysql:5.7 8033cd99e9f81fe27e674d626b116957d003981b768231cf22845d952f972e4c
说明:
-d 后台运行
-p 端口映射
-v 文件挂载
-e 容器环境设置
<br />测试是否挂载成功- 连接MySQL客户端,手动创建数据库,查看文件<br />挂载成功<a name="4kxee"></a>## 4. 具名和匿名挂载-v 容器内路径 #匿名挂载<br />-v 卷名:容器内路径 #具名挂载<br />-v /宿主机路径:容器内路径 #指定路径挂载<a name="h71iU"></a>## 5. 初识DockerfileDockerfile就是用来构建docker镜像的构建文件,就是一个命令脚本,体验一下!- 新建一个文件 目录为:/home/docker-test-dockerfile/dockerfile01- 编辑文件脚本:```shell[root@wjh docker-test-volume]# cat dockerfile1FROM centosVOLUME ["volume01","volume02"]CMD echo "-------end--------"CMD /bin/bash
构建文件
docker build -f dockerfile1 -t wjh/centos:1.0 .
[root@wjh docker-test-volume]# docker build -f dockerfile1 -t wjh/centos:1.0 .Sending build context to Docker daemon 2.048kBStep 1/4 : FROM centoslatest: Pulling from library/centos8a29a15cefae: Already existsDigest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700Status: Downloaded newer image for centos:latest---> 470671670cacStep 2/4 : VOLUME ["volume01","volume02"]---> Running in dba6792d83c6Removing intermediate container dba6792d83c6---> 4c864176b31cStep 3/4 : CMD echo "-------end--------"---> Running in b818027d044dRemoving intermediate container b818027d044d---> ef2356a399edStep 4/4 : CMD /bin/bash---> Running in c7470cfce351Removing intermediate container c7470cfce351---> 4adc6c84617cSuccessfully built 4adc6c84617cSuccessfully tagged wjh/centos:1.0

启动自己的镜像文件

查看挂载卷的位置
docker inspect 4adc6c84617c

6. 数据卷容器 —volumes-from
容器之间数据的共享,例如多个mysql同步容器
—volumes-from 相当于java里面的extend
文件之间是相互拷贝的概念
