5.11. 두 컨테이너 간에 파일 공유
컨테이너가 삭제된 경우에도 볼륨을 사용하여 컨테이너에 데이터를 유지할 수 있습니다. 볼륨은 여러 컨테이너 간에 데이터를 공유하는 데 사용할 수 있습니다. 볼륨은 호스트 시스템에 저장된 폴더입니다. 볼륨은 컨테이너와 호스트 간에 공유할 수 있습니다.
주요 이점은 다음과 같습니다.
- 볼륨은 컨테이너 간에 공유할 수 있습니다.
- 볼륨을 백업하거나 마이그레이션하는 것이 더 쉽습니다.
- 볼륨은 컨테이너 크기를 늘리지 않습니다.
사전 요구 사항
-
container-toolsmeta-package가 설치되어 있습니다.
프로세스
볼륨을 생성합니다.
podman volume create hostvolume
$ podman volume create hostvolumeCopy 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.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow mntPoint변수에서 정의한 디렉터리의 모든 파일을 나열합니다.ls $mntPoint/
$ ls $mntPoint/ host.txtCopy 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/bashCopy 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.txtCopy 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.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
CTRL+p및CTRL+q를 사용하여 컨테이너에서 분리합니다. 호스트의 공유 볼륨에 있는 파일을 나열하면 다음 두 파일이 표시됩니다.
ls $mntPoint
$ ls $mntPoint container1.rxt host.txtCopy 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/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너의 공유 볼륨에 있는 파일을 나열합니다.
ls /containervolume2
# ls /containervolume2 container1.txt host.txtCopy 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.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
CTRL+p및CTRL+q를 사용하여 컨테이너에서 분리합니다. 호스트의 공유 볼륨에 있는 파일을 나열하면 다음 세 개의 파일이 표시됩니다.
ls $mntPoint
$ ls $mntPoint container1.rxt container2.txt host.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow