Docker 数据卷操作的实现

2020-06-17 06:52:01易采站长站整理


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

这样便是将宿主机中的

/Users/sang/blog/docker/docker/
目录挂载到容器的
/usr/share/nginx/html/
目录下。接下来读者只需要在
/Users/sang/blog/docker/docker/
目录下添加 html 文件,或者修改 html 文件,都能在 nginx 访问中立马看到效果。

这种用法对于开发测试非常方便,不用重新部署,重启容器等。

注意:宿主机地址是一个绝对路径

 更多操作

Dockerfile中的数据卷

如果开发者使用了 Dockerfile 去构建镜像,也可以在构建镜像时声明数据卷,例如下面这样:


FROM nginx
ADD https://www.baidu.com/img/bd_logo1.png /usr/share/nginx/html/
RUN echo "hello docker volume!">/usr/share/nginx/html/index.html
VOLUME /usr/share/nginx/html/

这样就配置了一个匿名数据卷,运行过程中,将数据写入到

/usr/share/nginx/html/
目录中,就可以实现容器存储层的无状态变化。

查看所有数据卷

使用如下命令可以查看所有数据卷:


docker volume ls

如图:

查看数据卷详情

根据 volume name 可以查看数据详情,如下:


docker volume inspect

执行结果如下图:

删除数据卷

可以使用

docker volume rm
命令删除一个数据卷,也可以使用
docker volume prune
批量删除数据卷,如下:

批量删除时,未能删除掉所有的数据卷,还剩一个,这是因为该数据卷还在使用中,将相关的容器停止并移除,再次删除数据卷就可以成功删除了,如图:

数据卷容器

数据卷容器是一个专门用来挂载数据卷的容器,该容器主要是供其他容器引用和使用。所谓的数据卷容器,实际上就是一个普通的容器,举例如下:

创建数据卷容器

使用如下方式创建数据卷容器:


docker run -itd -v /usr/share/nginx/html/ --name mydata ubuntu