1. 程式人生 > >Docker持久化儲存與資料共享

Docker持久化儲存與資料共享

一.Docker持久化資料的方案

  • 基於本地檔案系統的Volume:可以在執行docker create或docker run時,通過-v引數將主機的目錄作為容器的資料卷。這部分功能便是基於本地檔案系統的volume管理。
  • 基於plugin的Volume:支援第三方的儲存方案,比如NAS,aws

1.Volume的型別

  • 受管理的data Volume,由docker後臺自動建立
  • 繫結掛載的Volume,具體掛載位置可以由使用者指定

二.資料持久化:Data Volume

1.操作流程

  • 注意:mysql的Dockerfile中由VOLUME ["/var/lib/mysql"]
    指定了持久化的路徑,此路徑是要被持久化的路徑,預設volume的名稱為local
  • 執行sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql啟用一個mysql的image容器,其中-v後跟的mysql表示volume別名,冒號後面的路徑為volume本地儲存的地址
  • 檢視sudo docker volume ls檢視docker的volume,會發現自動生成了一個volume
  • 通過sudo docker volume inspect volume的NAME值
    檢視對應volume的詳情資訊
  • 如果希望刪除volume,則可以使用sudo docker volume rm volumeNAME

2.恢復volume資料

  • 上述操作後會將資料儲存到/var/lib/mysql中,我們可以對container中的mysql資料進行增刪改查操作
  • 通過sudo docker rm mysql1移除container
  • 此時檢視/var/lib/mysql路徑仍然儲存volume
  • 我們可以使用sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
    再次開啟一個container,此時的volume會延用之前的資料實現資料的恢復

三.資料持久化:Bind Mounting

1.與Data Volume的區別

  • Data Volume需要在Dockerfile中定義要建立的volume
  • Bind Mounting是在執行時指定本地目錄與容器中目錄的一一對應關係即可docker run -v /home/aaa:/root/aaa