Docker 基礎知識 - 使用繫結掛載(bind mounts)管理應用程式資料
阿新 • • 發佈:2020-07-21
繫結掛載(bind mounts)在 Docker 的早期就已經出現了。與卷相比,繫結掛載的功能有限。當您使用繫結掛載時,主機上的檔案或目錄將掛載到容器中。檔案或目錄由其在主機上的完整或相對路徑引用。相反地,當您使用卷時,在主機上 Docker 的儲存目錄中建立一個新目錄,Docker 管理該目錄的內容。
該檔案或目錄不需要已經存在於 Docker 主機上。如果還不存在,則按需建立。繫結掛載的效能非常好,但它們依賴於主機的檔案系統,該檔案系統具有特定的可用目錄結構。如果您正在開發新的 Docker 應用程式,請考慮改用[命名卷](https://ittranslator.cn/backend/docker/2020/07/04/docker-storage-volumes.html)。不能使用 Docker CLI 命令直接管理繫結掛載。
![docker-types-of-mounts-bind](https://img2020.cnblogs.com/blog/2074831/202007/2074831-20200721011204681-609017834.png)
## 選擇 `-v` 或者 `--mount` 標記
最初,`-v` 或 `--volume` 標記用於獨立容器,`--mount` 標記用於叢集服務。但是,從 Docker 17.06 開始,您也可以將 `--mount` 用於獨立容器。通常,`--mount` 標記表達更加明確和冗長。最大的區別是 `-v` 語法將所有選項組合在一個欄位中,而 `--mount` 語法將選項分離。下面是每個標記的語法比較。
> 提示:新使用者推薦使用 `--mount` 語法,有經驗的使用者可能更熟悉 `-v` or `--volume` 語法,但是更鼓勵使用 `--mount` 語法,因為研究表明它更易於使用。
- `-v` 或 `--volume`: 由三個欄位組成,以冒號(:)分隔。欄位必須按照正確的順序排列,且每個欄位的含義不夠直觀明顯。
- 對於繫結掛載(bind mounts), 第一個欄位是主機上檔案或目錄的路徑。
- 第二個欄位是容器中檔案或目錄掛載的路徑。
- 第三個欄位是可選的,是一個逗號分隔的選項列表,比如 `ro`、`consistent`、 `delegated`、 `cached`、 `z` 和 `Z`。這些選項會在本文下面討論。
- `--mount`:由多個鍵-值對組成,以逗號分隔,每個鍵-值對由