09-Docker-Volumes數據管理

09-Docker-Volumes數據管理

Docker Version: 19.03.5docker

😄 Written by Zak Zhu

參考

數據卷類型

types-of-volumes

  • bindbash

    • 掛載宿主機上指定文件或目錄到容器中目標路徑
    • 容器中目標路徑不存在, 可以自動建立
    • 獨立於容器的讀寫層和生命週期, 實現數據共享和持久化
    • 很是好的性能, 但依賴於特定目錄結構的宿主機文件系統
    • 適用於生產環境

  • volumesession

    • 由Docker建立和管理, 不須要指定宿主機上的源路徑, 只須要指定容器中目標路徑.
    • 宿主機上的源路徑, Docker會在/var/lib/docker/volumes/路徑下自動建立
    • 容器中目標路徑不存在, 可以自動建立
    • 獨立於容器的讀寫層和生命週期, 實現數據共享和持久化
    • 適用於開發環境

  • tmpfsapp

    • 掛載宿主機內存到容器中目標路徑
    • 容器中目標路徑不存在, 可以自動建立
    • 容器中止, 掛載被刪除, 文件數據丟失
    • 非持久化, 且不能共享數據於容器間
    • 適用於非持久數據或敏感信息

數據卷操做

--mount '<key>=<value>,<key>=<value>,...'
KEY DESCRIPTION OF VALUE
type The type of the mount, which can be bind, volume, tmpfs.
source ---> For bind mounts, this is the path to the file or directory on the Docker host.

---> For named volumes, this is the name of the volume.
---> For anonymous volumes, this field is omitted.
target The path where the file or directory is mounted in the container.
readonly If present, causes the bind mount or named volume to be mounted into the container as read-only.
tmpfs-size Size of the tmpfs mount in bytes.
Unlimited by default.
tmpfs-mode File mode of the tmpfs in octal. For instance, 700 or 0700.
Defaults to 1777 or world-writable.


bind數據卷

  • 啓動容器A, 同時掛載一個bind數據卷性能

    docker container run \
      --detach --name 'container_A' \
      --mount 'type=bind,source=/tmp/data/,target=/app_data/'
      busybox sleep 3600
  • 啓動容器B, 同時掛載一個只讀的bind數據卷this

    docker container run \
      --detach --name 'container_B' \
      --mount 'type=bind,source=/tmp/data/,target=/app_data/,readonly' \
      busybox sleep 3600
  • 查看容器B上數據卷掛載信息code

    docker container inspect container_B

    1


volume數據卷

  • 啓動容器C, 同時掛載一個只讀的named volume數據卷視頻

    docker container run \
      --detach --name 'container_C' \
      --mount 'type=volume,source=devdb,target=/data/,readonly' \
      busybox sleep 3600
  • 查看容器C上數據卷掛載信息htm

    docker volume inspect devdb

    2

  • 啓動容器D, 同時掛載一個annoymous volume數據卷

    docker container run \
      --detach --name 'container_D' \
      --mount 'type=volume,target=/data/' \
      busybox sleep 3600
  • 查看容器D上數據卷掛載信息

    docker container inspect -f '{{.Mounts}}' container_D

    3

  • 列舉全部volume數據卷

    docker volume ls

    4

  • 刪除容器C以及掛載的named volume數據卷

    # Step1: stop container_C
    docker container stop container_C
    
    # Step2: remove container_C
    docker container rm container_C
    
    # Step3: remove the named volume 
    docker volume rm devdb
  • 刪除容器D以及掛載的annoymous volume數據卷

    # Step1: stop container_D
    docker container stop container_D
    
    # Step2: remove container_D and the annoymous volume
    docker container rm --volumes container_D

tmpfs數據卷

  • 啓動容器E, 同時掛載一個tmpfs數據卷

    docker container run \
      --detach --name 'container_E' \
      --mount 'type=tmpfs,target=/session/,tmpfs-size=128M' \
      busybox sleep 3600
  • 查看容器E上數據卷掛載信息

    docker container inspect container_E

    5

相關文章
相關標籤/搜索