Docker : 永続ストレージを利用する2019/02/19 |
|
コンテナーが破棄されると当然コンテナー内部のデータも消失するため、コンテナーで作成したデータを永続化するには、外部ストレージを利用する必要があります。
|
|
| [1] | ホスト側の任意のディレクトリをコンテナーにマウントして利用することができます。 |
|
# データ保管用ディレクトリ作成 PS C:\Users\Administrator> mkdir C:\docker-storage
# テストファイル作成 PS C:\Users\Administrator> Write-Output 'Docker Persistent Storage Test' | Out-File -Encoding default C:\docker-storage\index.html
# 作成したフォルダーをコンテナーの [C:\disk01] にマウントして起動 PS C:\Users\Administrator> docker run -it -v C:\docker-storage:C:\disk01 mcr.microsoft.com/windows/servercore:1809
Microsoft Windows [Version 10.0.17763.1637] (c) 2018 Microsoft Corporation. All rights reserved. C:\> dir C:\ Volume in drive C has no label. Volume Serial Number is 6CA1-73D3 Directory of C:\ 12/15/2020 08:07 PM <DIR> disk01 05/06/2020 08:48 PM 5,510 License.txt 12/03/2020 06:14 PM <DIR> Program Files 12/03/2020 06:12 PM <DIR> Program Files (x86) 12/03/2020 06:15 PM <DIR> Users 12/15/2020 08:09 PM <DIR> Windows 1 File(s) 5,510 bytes 5 Dir(s) 21,199,335,424 bytes free C:\> type C:\disk01\index.html Docker Persistent Storage Test |
| [2] | Docker データボリュームを作成して利用することもできます。 |
|
# [volume01] ボリューム作成 PS C:\Users\Administrator> docker volume create volume01 volume01 # ボリューム一覧表示 PS C:\Users\Administrator> docker volume ls DRIVER VOLUME NAME local volume01 # [volume01] の詳細表示 PS C:\Users\Administrator> docker volume inspect volume01
[
{
"CreatedAt": "2020-12-15T20:17:47-08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "C:\\ProgramData\\docker\\volumes\\volume01\\_data",
"Name": "volume01",
"Options": {},
"Scope": "local"
}
]
# [volume01] を コンテナー上の [C:\disk01] にマウントして起動 PS C:\Users\Administrator> docker run -it -v volume01:C:\disk01 mcr.microsoft.com/windows/servercore:1809 powershell Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\> ls C:\ Directory: C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 12/15/2020 8:17 PM disk01 d-r--- 12/3/2020 6:14 PM Program Files d----- 12/3/2020 6:12 PM Program Files (x86) d-r--- 12/3/2020 6:15 PM Users d----- 12/15/2020 8:31 PM Windows -a---- 5/6/2020 9:48 PM 5510 License.txt PS C:\> echo "Docker Volume test" | Out-File C:\disk01\testfile.txt -Encoding Default PS C:\> exit PS C:\Users\Administrator> Get-Content C:\ProgramData\docker\volumes\volume01\_data\testfile.txt Docker Volume test # 別コンテナーからも利用可 PS C:\Users\Administrator> docker run -v volume01:C:\volume01 mcr.microsoft.com/windows/servercore:1809 powershell -c "Get-Content C:\volume01\testfile.txt" Docker Volume test # ボリュームを削除する場合は以下 PS C:\Users\Administrator> docker volume rm volume01 Error response from daemon: remove volume01: volume is in use - [1864ecc444276667189e5c5cd099e38554a316d73b755670a5835742df673588, 89c96e683cb5ebf4a0bdb8614a0f53bf81a7dd0c345a2e45ce0be7cd61e0434c] # 上記のようにコンテナーがボリュームを使用中の場合は削除不可のため # ボリュームを削除したい場合は先にコンテナーを削除 PS C:\Users\Administrator> docker rm 1864ecc444276667189e5c5cd099e38554a316d73b755670a5835742df673588 PS C:\Users\Administrator> docker rm 89c96e683cb5ebf4a0bdb8614a0f53bf81a7dd0c345a2e45ce0be7cd61e0434c
docker volume rm volume01 volume01 |
| Sponsored Link |
|
|