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主机文件或目录结构包证与容器所需的绑定挂载一致时
草都可以从石头缝隙中长出来更可况你呢