我们知道docker是把应用和环境一起打包成一个镜像。run镜像之后会启动一个容器。但是删除容器操作也非常简单,也就是说数据如果在容器里的话,删除也意味着数据也随之消失,所以我们希望数据可以放在服务器上持久化,这时候我们就得学习容器的数据卷知识。
使用步骤
方式1:使用命令 -v 挂载
docker run -it -v 服务器[文件|目录]:容器目标[文件|目录]
#以centos镜像来测试
docker run -it -v /home/test:/home centos /bin/bash
这时候其实外部的 /home/test目录就跟内部容器的 /home 完全打通,内部加什么文件,外部目录也会有。外部加什么文件,内容也会变化。说白了就是一个同步机制。
#在外部的/home/test 下新建一个test.txt
cd /home/test
touch test.txt
容器内的/home
我们可以看到容器内部也有一个test.txt
1.这是一个双向的同步过程
2.哪怕你先停掉了容器,然后在外部中编辑内容,当启动容器后,也会同步相对于的内容。
删除容器
测试删除容器后,外部的服务器文件是否也会删除。
#查看正在运行容器 找到容器ID
docker ps
#停掉容器
docker stop 容器ID
#删除容器
docker rm 容器ID
这时候查看 外部刚才关联的目录,文件是没有被删除的。
重新挂载
由上面的动作可以知道删除容器是不会删除外部文件的,那么如果这时候重新挂载回去,容器内部会重新恢复文件么?
docker run -it -v /home/test:/home centos /bin/bash
答案与猜想一致,恢复了!