1
eDeeraiD0thei6Oh 2017-06-16 11:56:02 +08:00 1
搜搜 uber
|
2
xss 2017-06-16 13:01:21 +08:00 1
解释的可能不对, 完全是个人理解.
docker 的 volume, 本质上, 还是磁盘上的一个文件, 当指定某个目录是 volume 的时候, docker 默认会在其工作目录下, 创建一个 volumes/一串 ID/_data/ |
3
xss 2017-06-16 13:06:29 +08:00 1
擦...不小心发表了...
的文件夹.如果你在创建 image 的时候没有指定 volume, 那么目录会被统一放到这个镜像创建出来的容器目录下面, 并不会享受上面的特定待遇. 在创建出上面的目录之后, 系统(linux 下, windows 不知道), 会以特定的 mount 方式, 将创建的文件夹 mount 到 volumes/一串 ID/_data 下面. 所以, 文件层面, 性能损失很小, 可能需要经过 cgroups 的权限检查, 不过这个都是 hook, 性能损失可以忽略不计. 其次, 网络层面, docker 实际上是依靠 iptables 转发包, 所以包在本机会经过一次转发, 这些转发都是在内核里面直接进行的, 并不会经过网络的上策设备, 所以性能损失业很小. 综上, 将数据库使用 docker 持久化, 并将数据库的数据文件映射出来, 整体来说, 对性能影响非常小.基本可以忽略不计. |