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
将棋
Data visualization
ssh
statistical inference
Docker
GitHub Pages
VSCode
apt
development
システム管理
Coffee
Econometrics
cloud
数値計算
素数
Book
Font
Metrics
Poetry
architecture
aws
shell
systemctl
テンプレート
データ構造
ポワソン分布
会計分析
文字コード
環境構築
論文
App
Bayesian
Dynamic Programming
Keyboard
Processing
R
Steam
Ubuntu 24.04 LTS
filesystem
regex
(注意:GitHub Accountが必要となります)