DockerにおけるVolumeとは?
コンテナ内のファイルシステムをホストのファイルシステムに接続する方法として
- Volume mount
- bind mount
の2つが有ります.bind mountがホストマシーンのOSやディレクトリ構造に依存する一方, volumeはDockerに寄って管理されるという差分が有ります.
▶ Volumeの特徴
- Dockerの管理下でストレージ領域を確保
- Linuxならば
/var/lib/docker/volumes/
- Dockerコマンドを使って管理可能
- Linuxならば
- データのバックアップと復元が容易
- Linux DockerとWindows Dockerどちらでも動作する
- 他のコンテナとの共有が容易 and 複数のコンテナ間でボリュームを安全に共有可能
- bind mountよりもI/O効率が良い
- 永続データを扱う場合でも,volumeのコンテンツはコンテナ外に存在するのでコンテナサイズを増加させない
- bindはコンテナ内のファイルシステムとホストのファイルシステムが直接リンクする仕組み
Docker volumeの作成
Docker Volumeは以下のコマンドで作成可能です
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
% docker volume create docker-sandbox
docker-sandbox
# list all your volumes
% docker volume ls
DRIVER VOLUME NAME
local docker-sandbox
local vscode
# inspect the detail
% docker volume inspect docker-sandbox
[
{
"CreatedAt": "2024-07-01T13:25:23Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/docker-sandbox/_data",
"Name": "docker-sandbox",
"Options": null,
"Scope": "local"
}
]
Docker Volumeの利用
上で作成した新規volumeをコンテナにattachして起動する場合以下のコマンドとなります
1
2
3
% docker container run --rm \
--mount source=docker-sandbox,target=/app \
ubuntu:latest touch /app/my-persistent-data
別のコンテナにも以下のようにattach可能です
1
2
3
% docker container run --rm \
--mount source=docker-sandbox,target=/app \
fedora:latest ls -lFa /app/my-persistent-data
📘 REMARKS
source
にvolumeを指定しますが,上記コマンド実行時にvolumeに存在しない名前を入力すると自動的にvolumeが作成されます
volumeを削除する場合は
1
% docker volume rm docker-sandbox
使用されていないvolumeを一括で削除したい場合は
1
% docker volume prune
References
統計
Python
math
Linux
Ubuntu 20.04 LTS
Shell
English
git
方法論
Ubuntu 22.04 LTS
統計検定
競技プログラミング
フーリエ解析
前処理
SQL
coding
コミュニケーション
Network
ssh
将棋
Data visualization
Docker
Econometrics
VSCode
statistical inference
GitHub Pages
apt
development
システム管理
Coffee
cloud
数値計算
素数
Book
Font
Metrics
Poetry
Ubuntu 24.04 LTS
architecture
aws
shell
systemctl
テンプレート
データ構造
ポワソン分布
会計分析
文字コード
環境構築
論文
App
Bayesian
Dynamic Programming
Keyboard
Processing
R
Steam
filesystem
quarto
regex
(注意:GitHub Accountが必要となります)