Docker: 卷

如何使用 Docker 卷來持久化您的容器數據

歡迎來到 Stackhero 文件中心

Stackhero 提供一個即時可用的 Docker 雲端 CaaS(Containers as a Service) 平台,專為快速且可靠的容器部署而設計:

  • 只需一行 docker-compose up 指令即可部署到生產環境。無需額外設定:直接啟動您的容器即可。
  • 自行選擇您的網域名稱,系統會自動以 HTTPS 進行安全防護(例如:https://api.your-company.comhttps://www.your-company.comhttps://backoffice.your-company.com)。
  • 享有高效能與強大安全性的專屬私有基礎架構。
  • 一鍵套用更新,讓維護變得簡單且省時。

您的容器大約五分鐘內即可在生產環境上線。Stackhero 為您管理基礎架構、更新與安全性,讓您能專注於應用程式的交付。深入了解 Docker CaaS 雲端主機服務

根據設計,Docker 容器是短暫的。這意味著任何直接存儲在其中的數據將在容器被移除或替換時丟失。為了確保數據持久性,建議使用 Docker 卷。

不要在 Stackhero 上使用綁定掛載。 始終選擇 Docker 卷以防止數據丟失。

綁定掛載涉及將 Stackhero 主機 VM 的目錄鏈接到容器。但是,如果您依賴綁定掛載,更新您的 Stackhero for Docker 實例將導致以這種方式存儲的所有數據丟失。

綁定掛載通常在 docker run 命令中指定,語法如 -v /myDirectory:/mnt(注意前導 /)。在 Docker Compose 文件中,它們顯示為 volumes: /myDirectory:/mnt。禁止這些配置,否則您將丟失數據。

相反,使用 Docker 卷,這些卷由 Docker 管理,並且不引用絕對路徑。

總結:

錯誤的方法:

docker run -it -v /myDirectory:/mnt alpine

正確的方法:

docker volume create myVolume
docker run -it -v myVolume:/mnt alpine

使用 Docker Compose 文件時:

錯誤的配置:

services:
  myService:
    image: alpine
    volumes:
      - /myDirectory:/mnt

正確的配置:

services:
  myService:
    image: alpine
    volumes:
      - myVolume:/mnt

volumes:
  myVolume:
    name: myVolume

這裡是管理 Docker 卷的快速參考:

  • 要創建名為 myVolume 的新卷,請運行:

    docker volume create myVolume
    
  • 列出所有現有卷:

    docker volume ls
    
  • 要刪除名為 myVolume 的特定卷:

    docker volume rm myVolume
    

    注意:刪除卷將永久刪除其中存儲的所有數據,並且無法恢復。