Docker Version: 19.03.5docker
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. |
啓動容器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
啓動容器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
啓動容器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
列舉全部volume數據卷
docker volume ls
刪除容器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
啓動容器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