Docker Volume을 정리해 봤습니다.

10401 단어 Docker

개시하다


처음에 볼륨을 잘 몰라서.
총괄해 보았다.
(중요한 부분만 기재되어 있으니 오류가 있으면 메시지를 남겨주세요)

컨디션


본 보도는 다음과 같은 환경 등을 사용했다.
컨디션
Version
application
Windows
10(64bit)
Docker for Windows
macOS
Mojave(64bit)
Docker for Mac

미리 준비하다


Docker 환경 사용 가능
Mac: Docker 환경에서 사용 가능(Comming Soon)

[결론] - v 옵션의 동작은 다음과 같다.



참고로 공식적으로 추천하는 것은--mount이번에는 -v의 확인이기 때문에 관련되지 않는다--mount.
그 다음은 확인한 내용입니다.

컨테이너 시작 및 생성(자동)


terminal
# ① ~ ⑤
>docker run -v vol1 --name c1 -itd osugizmo/alpine:3.9.4 /bin/sh
>docker volume ls ★ボリューム名をメモっておく
>docker run -v vol1 --name c2 -itd osugizmo/alpine:3.9.4 /bin/sh
>docker run -v <①Volumeのhash値>:/vol1 --name c3 -itd osugizmo/alpine:3.9.4 /bin/sh
>docker run -v vol2:/vol1 --name c4 -itd osugizmo/alpine:3.9.4 /bin/sh
>docker run -v /c/vol3:/vol1 --name c5 -itd osugizmo/alpine:3.9.4 /bin/sh

# 起動コンテナの確認
>docker ps -a
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS               NAMES
d44602250ba5        osugizmo/alpine:3.9.4   "/bin/sh"           26 minutes ago      Up 26 minutes                           c5
fd986a43c555        osugizmo/alpine:3.9.4   "/bin/sh"           26 minutes ago      Up 26 minutes                           c4
52170f5abcd0        osugizmo/alpine:3.9.4   "/bin/sh"           26 minutes ago      Up 26 minutes                           c3
b0899080f006        osugizmo/alpine:3.9.4   "/bin/sh"           27 minutes ago      Up 27 minutes                           c2
4a7d512beff1        osugizmo/alpine:3.9.4   "/bin/sh"           27 minutes ago      Up 27 minutes                           c1

# ボリュームの確認
>docker volume ls
DRIVER              VOLUME NAME
local               3fe77f2217648fad943a325442a85ec350213eb837f7169d653ddbf04c61b4fd
local               62ec5b816fc407e53582a092762ff43610e7f91f99b95c112fd83b6745a3abd6
local               vol2

C1 컨테이너에 연결된 암호화 볼륨에 파일 만들기


terminal
>docker exec -it c1 /bin/sh
/# ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var    vol1 # <---★マウントされている

/# echo c1-container > /vol1/c1-file1.txt # <---★ファイル作成+書き込み

/# ls -la /vol1/
total 12
drwxr-xr-x    2 root     root          4096 Jun 16 17:39 .
drwxr-xr-x    1 root     root          4096 Jun 16 17:04 ..
-rw-r--r--    1 root     root            13 Jun 16 17:39 c1-file1.txt # <---★ファイルが存在する

/# cat /vol1/c1-file1.txt
c1-container # <---★書き込まれている

/# exit

C2 컨테이너에 연결된 암호화 볼륨에 파일 만들기


terminal
>docker exec -it c2 /bin/sh
/# ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var    vol1 # <---★同じvol1でマウントされている

/# ls -la /vol1 # <---★C1とは別のボリュームなのでファイルが存在しない

total 8
drwxr-xr-x    2 root     root          4096 Jun 16 17:04 .
drwxr-xr-x    1 root     root          4096 Jun 16 17:04 ..

/# echo c2-container > /vol1/c2-file1.txt # <---★ファイル作成+書き込み

/# ls -la /vol1/
total 12
drwxr-xr-x    2 root     root          4096 Jun 16 17:50 .
drwxr-xr-x    1 root     root          4096 Jun 16 17:04 ..
-rw-r--r--    1 root     root            13 Jun 16 17:50 c2-file1.txt # <---★ファイルが存在する

/# cat /vol1/c2-file1.txt
c2-container # <---★書き込まれている

/# exit

C3 컨테이너에 연결된 암호화 볼륨에 C1 볼륨의 C1 파일이 있는지 확인


terminal
>docker exec -it c3 /bin/sh
/# ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var    vol1 # <---★同じvol1でマウントされている

/# ls -la /vol1 # <---★C1のボリュームなのでファイルが存在する
total 12
drwxr-xr-x    2 root     root          4096 Jun 16 17:39 .
drwxr-xr-x    1 root     root          4096 Jun 16 17:05 ..
-rw-r--r--    1 root     root            13 Jun 16 17:39 c1-file1.txt

/# cat /vol1/c1-file1.txt
c1-container # <---★C1で作成したファイル+内容と一致

/# exit

C4 컨테이너에 연결된 암호화 볼륨에 파일 만들기


terminal
>docker exec -it c4 /bin/sh
/# ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var    vol1 # <---★マウントされている

/# echo c4-container > /vol1/c4-file1.txt # <---★ファイル作成+書き込み

/# ls -la /vol1/
total 12
drwxr-xr-x    2 root     root          4096 Jun 16 18:20 .
drwxr-xr-x    1 root     root          4096 Jun 16 17:05 ..
-rw-r--r--    1 root     root            13 Jun 16 18:20 c4-file1.txt # <---★ファイルが存在する

/# cat /vol1/c4-file1.txt
c4-container # <---★書き込まれている

/# exit

C5 컨테이너에 연결된 암호화 볼륨에 파일 만들기


terminal
>docker exec -it c5 /bin/sh
/# ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var    vol1 # <---★同じvol1でマウントされている

/# ls -la /vol1 # <---★C1~C4とは別のボリュームなのでファイルが存在しない

total 8
drwxr-xr-x    2 root     root          4096 Jun 16 17:04 .
drwxr-xr-x    1 root     root          4096 Jun 16 17:04 ..

/# echo c5-container > /vol1/c5-file1.txt # <---★ファイル作成+書き込み

/# ls -la /vol1/
total 5
drwxrwxrwx    2 root     root             0 Jun 16 18:13 .
drwxr-xr-x    1 root     root          4096 Jun 16 17:05 ..
-rwxr-xr-x    1 root     root            13 Jun 16 18:13 c5-file1.txt<---★ファイルが存在する
※ホスト(Windows)とbindしているから?実行権限が自動でついた

/# cat /vol1/c5-file1.txt
c5-container # <---★書き込まれている

/# exit

>cd c:\vol3
>c:\vol3>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は C823-E669 です

 c:\vol3 のディレクトリ

2019/06/17  03:13    <DIR>          .
2019/06/17  03:13    <DIR>          ..
2019/06/17  03:13                13 c5-file1.txt # <---★書き込まれている

최후


저는 개인적으로 호스트perission의 영향을 받고 싶지 않아요.
추출하고 싶을 때 ④ 밑받침을 tar는cp로 정리한다.
(개인적인 견해니까 추천해 주시면 알려주세요)
terminal
# 抽出したいものをtarでまとめる
>docker exec -i c4 tar -zcvf vol1.tar.gz /vol1

# コンテナからホストにコピー
>docker exec -i c4 ls -la
>docker cp c4:/vol1.tar.gz ./

# コンテナからまとめたtarを削除
>docker exec -i c4 rm /vol1.tar.gz
>docker exec -i c4 ls -la

# 解凍
>tar -zxvf vol1.tar.gz

좋은 웹페이지 즐겨찾기