Docker 入门教程(五)数据卷 Volumes

有些容器在运行的时候是会产生数据的;
这种容器就叫做有状态容器;
比如说 MySQL 容器;
我们在创建镜像的时候希望保留的是 MySQL 各种配置以及扩展;
并不想把 MySQL 的数据也打包到镜像中;
数据卷就是为此场景而生的;
数据卷分为两种类型:

  1. 绑定挂载的 volume (bind mount volume)
  2. 受管理的 volume (managed volume)

绑定挂载的 volume (bind mount volume)

先来讲绑定挂载的 volume ;
创建一个测试数据卷;

docker run -it -v /root/test:/test baijunyao/test /bin/bash

-v : 创建数据卷
/root/test:/test : 把本地的 /root/test 目录加载到容器的 /test 目录;
在容器的 test 目录中创建一个 a.php 文件;

touch /test/a.php

我们退出容器回到宿主机可以发现 /root/test 目录下也有了 a.php 文件;

受管理的 volume (managed volume)

绑定挂载的 volume 的方案并不优雅;
因为它将宿主机和容器进行了强耦合;
我们来创建一个受管理的 volume ;

docker run -it -v /test baijunyao/test /bin/bash

命令中我们没有指定宿主机的目录;
Docker 会创建到 /var/lib/docker/volumes 目录下;
docker volumes 也可以通过命令查看:

docker volume ls

docker volumes

但是这个 VOLUME NAME 非常不方便记录;
如果要自定义 VOLUME NAME 可以使用 volume create 命令;

docker volume create vm_test

再次查看数据卷

docker volume ls

docker volumes

挂载数据卷

接着把刚创建的数据卷挂载到容器上;

docker run -it --mount source=vm_test,target=/test baijunyao/test  /bin/bash

在容器中创建个文件;

touch /test/volume.txt

退出容器在宿主机的 volume 目录查看;

删除数据卷

docker volume rm vm_test

白俊遥博客
请先登录后发表评论
  • latest comments
  • 总共4条评论
白俊遥博客

空白的记忆。白俊遥博客白俊遥博客12313131312白俊遥博客白俊遥博客

2019-11-15 21:12:49 回复

白俊遥博客
  • 幸福的小海豚 回复 空白的记忆。白俊遥博客
  • 2019-11-17 16:59:16 回复
白俊遥博客

阿航:12313

2019-11-07 11:19:15 回复

白俊遥博客

Music音乐鱼白俊遥博客

2019-11-06 16:14:24 回复

白俊遥博客

null:1

2019-11-06 10:42:00 回复