1. 介紹
之前有說過,在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
完結。