将应用和环境打包成一个镜像。 数据 如果数据在容器中,容器删除,数据就会丢失。 比如mysql,容器删了 基本等于 删库跑路。
如何解决:
1:希望mysql数据存在本地/or其他地方 2:希望容器之间可以有一个共享技术!docker容器中产生的数据,可以同步到本地。 这就是卷技术,也就是数据的挂载。 将容器内的目录挂载到虚拟机/linux中 本质就是 把mysql产生的数据写到本地机或者其他稳定的地方。(一种同步机制)
总结:是一种容器的持久化,和同步操作!,同时容器间可以数据共享。
使用数据卷
1:用命令的方式进行挂载 -v
1:先运行一个容器 docker run -it -v主机目录:容器内目录 -it 交互模式 -v 类似于-p 主机端口:容器内端口 docker run -it -v /home/ceshi:/home centos /bin/bash
找到-v 挂载的地方 source :对于服务器上的地址 destination:docker容器内的地址 (可以理解为 指针,指向的是同一块内存:服务器上的)
检查是否真的挂载成功
1:进入容器的home目录,进入到服务器的ceshi 目录 2:在容器内部加一个文件,
停止容器 再次检查
exit 退出容器 docker ps 查看正在运行的容器,确保容器停止了 3:在服务器上的cehsi目录进行修改 在ceshi内输入: vim test.java 在此文件中加一些字。
修改完成后,再次启动容器
1:先查好看启动过的所有容器。docker ps -a
复制好 之前被停止(即创建过卷的那个容器的容器id) 2:启动容器 docker start 容器id(1中复制的) 3:进入正在运行的命令 docker attach 容器id(1中复制的) 4:cd到home目录下 查看test.java cd /home ls cat test.java
## 每次都要进容器该命令很麻烦,该如何做
现在可以通过-v命令挂载出来。 -v /user/share/nginx/:/usr/nginx 服务器 容器