数据卷入门

数据卷可以绕过拷贝系统,在多个容器之间、容器和宿主机之间共享目录或者文件,数据卷绕过了拷贝系统,可以达到本地磁盘I/O性能。
本文先通过一个简单的案例向读者展示数据卷的基本用法。
以前面使用的nginx镜像为例,在运行该容器时,可以指定一个数据卷,命令如下:

docker run -itd --name nginx -v /usr/share/nginx/html/ -p 80:80 bc26f1ed35cf

运行效果如下:

此时,我们创建了一个数据卷并且挂载到容器的/usr/share/nginx/html/目录下,小伙伴们知道,该目录实际上是nginx保存html目录,在这里挂载数据卷,一会我们只需要修改本地的映射位置,就能实现页面的修改了。
接下来使用docker inspect命令查看刚刚创建的容器的具体情况,找到数据卷映射目录,如下:

可以看到,Docker默认将宿主机
的/var/lib/docker/volumes/0746bdcfc045b237a6fe2288a3af9d7b80136cacb3e965db65a212627e217d
75/_data目录作为source目录,接下来,进入到该目录中,如下:

此时发现该目录下的文件内容与容器中/usr/share/nginx/html/目录下的文件内容一致,这是因为挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中(如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉)。

小贴士:
由于Mac中的Docker有点特殊,上文提到的/var/lib/xxxx目录,如果是在linux环境下,则直接进入即可,如果是在mac中,需要首先执行如下命令,在新进入的命令行中进入到/var/lib/xxx目录下:screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
接下来修改改文件中的index.html文件内容,如下:

echo "hello volumes">index.html

修改完成后,再回到浏览器中,输入http://localhost查看nginx中index.html页面中的数据,发现已经发生改变。说明宿主机中的文件共享到容器中去了。

posted @ 2020-08-18 17:26  柒丶月  阅读(123)  评论(0)    收藏  举报