如果你有一些持續(xù)更新的數(shù)據(jù)需要在容器之間共享,最好創(chuàng)建數(shù)據(jù)卷容器。
數(shù)據(jù)卷容器,其實(shí)就是一個(gè)正常的容器,專門用來提供數(shù)據(jù)卷供其它容器掛載的。
首先,創(chuàng)建一個(gè)命名的數(shù)據(jù)卷容器 dbdata:
$ sudo docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres
然后,在其他容器中使用 --volumes-from 來掛載 dbdata 容器中的數(shù)據(jù)卷。
$ sudo docker run -d --volumes-from dbdata --name db1 training/postgres
$ sudo docker run -d --volumes-from dbdata --name db2 training/postgres
還可以使用多個(gè) --volumes-from 參數(shù)來從多個(gè)容器掛載多個(gè)數(shù)據(jù)卷。
也可以從其他已經(jīng)掛載了數(shù)據(jù)卷的容器來掛載數(shù)據(jù)卷。
$ sudo docker run -d --name db3 --volumes-from db1 training/postgres
注意:使用
--volumes-from參數(shù)所掛載數(shù)據(jù)卷的容器自己并不需要保持在運(yùn)行狀態(tài)。
如果刪除了掛載的容器(包括 dbdata、db1 和 db2),數(shù)據(jù)卷并不會(huì)被自動(dòng)刪除。如果要?jiǎng)h除一個(gè)數(shù)據(jù)卷,必須在刪除最后一個(gè)還掛載著它的容器時(shí)使用 docker rm -v 命令來指定同時(shí)刪除關(guān)聯(lián)的容器。
這可以讓用戶在容器之間升級和移動(dòng)數(shù)據(jù)卷。具體的操作將在下一節(jié)中進(jìn)行講解。