5.11. 두 컨테이너 간에 파일 공유
컨테이너가 삭제된 경우에도 볼륨을 사용하여 컨테이너에 데이터를 유지할 수 있습니다. 볼륨은 여러 컨테이너 간에 데이터를 공유하는 데 사용할 수 있습니다. 볼륨은 호스트 시스템에 저장된 폴더입니다. 볼륨은 컨테이너와 호스트 간에 공유할 수 있습니다.
주요 이점은 다음과 같습니다.
- 볼륨은 컨테이너 간에 공유할 수 있습니다.
- 볼륨을 백업하거나 마이그레이션하는 것이 더 쉽습니다.
- 볼륨은 컨테이너 크기를 늘리지 않습니다.
사전 요구 사항
-
container-tools
meta-package가 설치되어 있습니다.
프로세스
볼륨을 생성합니다.
podman volume create hostvolume
$ podman volume create hostvolume
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 볼륨에 대한 정보를 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow volumes 디렉터리에 볼륨을 생성합니다. 보다 쉽게 조작하기 위해 변수에 마운트 지점 경로를 저장할 수 있습니다.
$ mntPoint=$(podman volume inspect hostvolume --format {{.Mountpoint}})
.sudo podman volume create hostvolume
을 실행하면 마운트 지점이/var/lib/containers/storage/volumes/hostvolume/_data
로 변경됩니다.mntPoint
변수에 저장된 경로를 사용하여 디렉터리 내에 텍스트 파일을 생성합니다.echo "Hello from host" >> $mntPoint/host.txt
$ echo "Hello from host" >> $mntPoint/host.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mntPoint
변수에서 정의한 디렉터리의 모든 파일을 나열합니다.ls $mntPoint/
$ ls $mntPoint/ host.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow myubi1
이라는 컨테이너를 실행하고 호스트의hostvolume
볼륨 이름으로 정의된 디렉터리를 컨테이너의/containervolume1
디렉터리에 매핑합니다.podman run -it --name myubi1 -v hostvolume:/containervolume1 registry.access.redhat.com/ubi10/ubi /bin/bash
$ podman run -it --name myubi1 -v hostvolume:/containervolume1 registry.access.redhat.com/ubi10/ubi /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mntPoint
변수(-v $mntPoint:/containervolume1
)에서 정의한 볼륨 경로를 사용하는 경우 사용되지 않은 볼륨을 제거하는podman volume prune
명령을 실행할 때 데이터가 손실될 수 있습니다. 항상-v hostvolume_name:/containervolume_name
을 사용합니다.컨테이너의 공유 볼륨에 있는 파일을 나열합니다.
ls /containervolume1
# ls /containervolume1 host.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 호스트에서 만든
host.txt
파일을 볼 수 있습니다./containervolume1
디렉터리에 텍스트 파일을 생성합니다.echo "Hello from container 1" >> /containervolume1/container1.txt
# echo "Hello from container 1" >> /containervolume1/container1.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
CTRL+p
및CTRL+q
를 사용하여 컨테이너에서 분리합니다. 호스트의 공유 볼륨에 있는 파일을 나열하면 다음 두 파일이 표시됩니다.
ls $mntPoint
$ ls $mntPoint container1.rxt host.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 시점에서 컨테이너와 호스트 간에 파일을 공유하고 있습니다. 두 컨테이너 간에 파일을 공유하려면
myubi2
라는 다른 컨테이너를 실행합니다.myubi2
라는 컨테이너를 실행하고 호스트의hostvolume
볼륨 이름으로 정의된 디렉터리를 컨테이너의/containervolume2
디렉터리에 매핑합니다.podman run -it --name myubi2 -v hostvolume:/containervolume2 registry.access.redhat.com/ubi10/ubi /bin/bash
$ podman run -it --name myubi2 -v hostvolume:/containervolume2 registry.access.redhat.com/ubi10/ubi /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너의 공유 볼륨에 있는 파일을 나열합니다.
ls /containervolume2
# ls /containervolume2 container1.txt host.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow myubi1
컨테이너 내에서 만든host.txt
및container1.txt
파일을 확인할 수 있습니다./containervolume2
디렉터리에 텍스트 파일을 생성합니다.echo "Hello from container 2" >> /containervolume2/container2.txt
# echo "Hello from container 2" >> /containervolume2/container2.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
CTRL+p
및CTRL+q
를 사용하여 컨테이너에서 분리합니다. 호스트의 공유 볼륨에 있는 파일을 나열하면 다음 세 개의 파일이 표시됩니다.
ls $mntPoint
$ ls $mntPoint container1.rxt container2.txt host.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow