# 6. docker 的数据卷
#### 1. 介绍
上一篇:[使用Dockerfile文件(五)](https://www.rails365.net/articles/shi-yong-dockerfile-wen-jian-wu)
之前有说过,在docker容器上进行的更改并不会主动被保存下来,除非你commit了,不然你重新运行这个镜像,生成新的容器,之前容器的内容就会没有了,因为容器只是一个进程而已。
所以说,容器运行时应该尽量保持容器存储层不发生写操作。
但是,有时候我们需要存储持久化的数据,比如数据库,你的数据都在容器中,肯定是不行的,因为一退出就没有了。
这个时候需要用到`数据卷`。
`数据卷`就是可以让你把主机上的数据以挂载的方式链接到容器中,这样不同的容器也能共享,而且数据也不会因为容器的退出而丢失。
这个`数据卷`会被经常使用。
#### 2. 使用
下面我们来体会一下`数据卷`的功能。
```
$ docker run -d -v ~/mynginx:/a -p 80:80 --name webserver nginx
```
这里命令会挂载主机的目录`~/mynginx`到容器中的目录`/a`。
你可以试验一下,分别在两端更改内容,比如新建一个文件,看是不是都变化了。
我们也可以创建数据卷容器,数据卷容器也是一个正常的容器,这种容器可以为其他容器提供和共享数据。
比如,下面创建了一个数据卷容器:
```
$ sudo docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres
```
然后其他容器要使用这个数据卷容器的话,只要使用`--volumes-from`参数即可。
```
$ sudo docker run -d --volumes-from dbdata --name db1 training/postgres
$ sudo docker run -d --volumes-from dbdata --name db2 training/postgres
```
完结。
下一篇:[Docker Compose 的介绍与安装 (七)](https://www.rails365.net/articles/docker-compose-de-jie-shao-yu-an-zhuang-qi)
- 0. 介绍
- 1. 安装 docker
- 2. docker 的镜像和镜像源加速
- 3. docker 的容器
- 4. 理解 docker 镜像的层叠结构
- 5. 使用 Dockerfile 文件
- 6. docker 的数据卷
- 7. Docker Compose 的介绍与安装
- 8. 使用 compose 部署 GitLab 应用
- 9. 使用 compose 部署 Rocket.Chat 应用
- 10. docker 部署深入理解
- 11. 部署 owncloud 与 phpMyAdmin
- 12. 让 php-fpm 跑的 owncloud 应用 docker 化
- 13. docker 迁移 GitLab 项目