僅資料容器

僅資料容器已過時,現在被視為反模式!

在以前的日子裡,在 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 子命令和命名卷,請參閱建立命名卷