使用 Named volume

  1. Host volume 直接使用 host 上的目錄做為 volume,Named volume 則是使用 docker 產生並可管理的資料夾做為 volume,先查詢現有的 volume:
    [root@dyw219 ~]# docker volume ls
    DRIVER              VOLUME NAME
    local               data
    
  2. 使用 centos image 開啟一個容器,指定連結 volume data,資料夾名稱為 /data,查看 /data 目錄下目前無任何檔案。
    [root@dyw219 ~]# docker run --rm -v data:/data -it centos ls -l /data
    total 0
    
  3. 在容器的目錄 /data 下產生一個空檔案 file1。
    [root@dyw219 ~]# docker run --rm -v data:/data -it centos touch /data/file1
    
  4. 以上示範的容器,使用 --rm 選項,也就是在退出後容器就已刪除,但再一次連結 volume data 產生容器,查看容器的目錄 /data 下還是有一個空檔案 file1。
    [root@dyw219 ~]# docker run --rm -v data:/data -it centos ls -l /data
    total 0
    -rw-r--r--. 1 root root 0 Aug 21 22:03 file1
    
  5. 即使不使用 --rm 選項,docker run 每次執行的也是不同的容器,一樣可以看到先前產生的檔案 file1 存在。原因是 volume 在 host 上是獨立旳掛載點,到 host 的 volume 掛載點查看,也確實有一個空檔案 file1。
    [root@dyw219 ~]# ll /var/lib/docker/volumes/data/_data/
    total 0
    -rw-r--r--. 1 root root 0 Aug 22 06:03 file1
    
  6. 建立一個名為 vol1 的 volume,docker run 使用 image centos 建立名為 dtest9 的容器,其目錄 /data 連線到 vol1,執行命令 "ls -l /data",保留此容器,退出後不能刪除。