# 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 項目