docker 应用数据的管理之bind mounts

创建容器使用bind mounts 挂载文件系统。宿主机文件系统会覆盖掉容器里初始数据

[root@localhost ~]# mkdir /www/htpm -pv
mkdir: 已创建目录 "/www"
mkdir: 已创建目录 "/www/htpm"

[root@localhost ~]# docker run -d --name web-7 -p 82:80 --mount type=bind,src=/www/htpm,dst=/usr/share/nginx/html nginx
814082b3448bac40f12fbce6f9f207032d76bf284d8c633a5c7b29788d6e6d85
[root@localhost ~]# ls /www/htpm/
[root@localhost ~]# docker exec -it web-7 bash
root@814082b3448b:/# cd /usr/share/nginx/html/
root@814082b3448b:/usr/share/nginx/html# ls
root@814082b3448b:/usr/share/nginx/html# 
root@814082b3448b:/usr/share/nginx/html# mkdir l
root@814082b3448b:/usr/share/nginx/html# echo "chenxi" > index.html
root@814082b3448b:/usr/share/nginx/html# ls
index.html  l
root@814082b3448b:/usr/share/nginx/html# exit
exit

[root@localhost ~]# ls /www/htpm/
index.html  l

  

 

使用另一种方式挂载

[root@localhost ~]# docker run -d --name web-c -p 91:80  -v /www:/opt nginx
9eb50928c53e83b9804862b6441d22fc8a27a4963bd025cd8af41e3922e8e704
[root@localhost ~]# ls /www/
htpm
[root@localhost ~]# docker run 
centos         centos:latest  nginx          nginx:latest   nginx:web4     
[root@localhost ~]# docker exec -it web-c bash
root@9eb50928c53e:/# ls /opt/
htpm
root@9eb50928c53e:/# ls /opt/htpm/
index.html  l
root@9eb50928c53e:/# 

volume 与bind mounts 的区别

 volume 特点

运行多个容器之间共享数据

当容器被移除时,该卷依旧存在

多容器可以同时挂载相同的卷

当明确删除时卷才会被删除

将容器数据存储在远程数据或其他主机上

将数据从一台docker主机迁移到另一台是,先停止容器,然后备份卷的目录

bind mounts的特点

从主机共享文件到容器。默认情况下。挂载主机/etc/resolv.conf 到每个容器。提供dns解析

在docker主机上的开发环境和容器之间共享源代码。例如,可以将maven target 目录挂载到容器中,每次docker主机构建项是maven项目时,容器都可以访问构建的项目包

当docker主机文件或目录结构包证与容器所需的绑定挂载一致时

 

posted @ 2019-02-23 09:52  烟雨楼台,行云流水  阅读(222)  评论(0编辑  收藏  举报