多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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)