僅資料容器
僅資料容器已過時,現在被視為反模式!
在以前的日子裡,在 Docker 的 volume
子命令之前,在可以建立命名卷之前,Docker 在任何容器中沒有對它們的引用時刪除了卷。僅資料容器已過時,因為 Docker 現在提供了建立命名卷的功能,以及通過各種 docker volume
子命令提供的更多實用程式。由於這個原因,僅資料容器現在被視為反模式。
從過去幾年開始,Web 上的許多資源都提到了使用稱為僅資料容器的模式,該模式只是一個 Docker 容器,僅用於保持對資料卷的引用。
請記住,在此上下文中,資料卷是未從主機掛載的 Docker 卷。為了澄清,資料量是使用 VOLUME
Dockerfile 指令建立的卷,或者在 docker run
命令中使用命令列上的 -v
開關建立的卷,特別是格式為 -v /path/on/container
。因此,僅資料容器是一個容器,其唯一目的是附加資料卷,--volumes-from
命令中的 --volumes-from
標誌使用該容器。例如:
docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true
執行上述命令時,將建立僅資料容器。它只是一個空容器,附有資料卷。然後可以在另一個容器中使用此卷,如下所示:
docker run -d --name="mysql" --volumes-from="mysql-data" mysql
mysql
容器現在具有相同的體積,也在 mysql-data
中。
因為 Docker 現在提供 volume
子命令和命名卷,所以此模式現在已過時,不推薦使用。
要開始使用 volume
子命令和命名卷,請參閱建立命名卷