天天看點

Docker資料管理

Docker資料管理

概述

在容器中管理資料主要有兩種方式:

  • 資料卷(Volumes)
  • 挂載主機目錄 (Bind mounts)

資料卷

資料卷是一個可供一個或多個容器使用的特殊目錄,可以在容器之間共享和重用,預設會一直存在,即使容器被删除。

資料卷操作

第一步:建立資料卷,例如:

docker volume create container-vol
      

第二步:檢視所有資料卷,例如:

docker volume ls
      

檢視指定 資料卷 的資訊

docker volume inspect container-vol
      

查詢的結果:

[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/container-vol/_data",
        "Name": "container-vol",
        "Options": {},
        "Scope": "local"
    }
]
      

第三步:啟動挂載資料卷的容器,例如:

docker run -it --mount source=container-vol,target=/root centos:7 bash
      

或者采用如下簡寫方式

docker run -it -v container-vol:/root centos:7 bash
      

-v container-vol:/root 把資料卷 container-vol 挂載到容器的 /root 目錄

第四步:删除資料卷(如果資料卷被容器使用則無法删除),例如

doker volume rm container-vol
      

清理無主資料卷

docker volume prune
      

挂載主機目錄

我們還可以在啟動容器時,以目錄直接挂載的方式進行資料操作,例如:

docker run -it -v /usr/app:/opt/app centos:7 bash
      

其中:

  1. /usr/app:為主控端目錄
  2. /opt/app: 為啟動容器的一個目錄
  3. -v 用于指定挂載目錄,如果本地目錄(主控端目錄)不存在, Docker 會自動為你按照挂載目錄進行目錄的建立。

例如:

Docker資料管理

檢視挂載目錄資訊

docker inspect 91a #91a 為容器id
      

顯示結果:

...

"Mounts": [
    {
        "Type": "bind",
        "Source": "/usr/app",
        "Destination": "/opt/app",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

...