5.11. 두 컨테이너 간 파일 공유
컨테이너를 삭제한 경우에도 볼륨을 사용하여 컨테이너에 데이터를 유지할 수 있습니다. 볼륨은 여러 컨테이너 간에 데이터를 공유하는 데 사용할 수 있습니다. 볼륨은 호스트 시스템에 저장된 폴더입니다. 컨테이너와 호스트 간에 볼륨을 공유할 수 있습니다.
주요 이점은 다음과 같습니다.
- 컨테이너 간에 볼륨을 공유할 수 있습니다.
- 볼륨은 백업 또는 마이그레이션이 더 쉽습니다.
- 볼륨이 컨테이너 크기를 늘리지 않습니다.
사전 요구 사항
-
container-tools모듈이 설치되어 있습니다.
절차
볼륨을 생성합니다.
$ podman volume create hostvolume볼륨에 대한 정보를 표시합니다.
$ podman volume inspect hostvolume [ { "name": "hostvolume", "labels": {}, "mountpoint": "/home/username/.local/share/containers/storage/volumes/hostvolume/_data", "driver": "local", "options": {}, "scope": "local" } ]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.txtthe
mntPoint변수에 의해 정의된 디렉터리에 있는 모든 파일을 나열합니다.$ ls $mntPoint/ host.txtmyubi1이라는 컨테이너를 실행하고호스트의 hostvolume볼륨 이름으로 정의된 디렉터리를 컨테이너의/containervolume1디렉터리에 매핑합니다.$ podman run -it --name myubi1 -v hostvolume:/containervolume1 registry.access.redhat.com/ubi8/ubi /bin/bashthe
mntPoint 변수(-가 손실되어 사용되지 않는 볼륨을 제거할 수 있습니다. 항상v $mntPoint:/containervolume1)에서 정의한 볼륨 경로를 사용하는 경우podman volume prune명령을 실행할 때 데이터-v hostvolume_name:/containervolume_name을 사용합니다.컨테이너의 공유 볼륨에 있는 파일을 나열합니다.
# ls /containervolume1 host.txt호스트에서 생성한
host.txt파일을 확인할 수 있습니다./containervolume1디렉터리에 텍스트 파일을 생성합니다.# echo "Hello from container 1" >> /containervolume1/container1.txt-
CTRL+p 및를 사용하여 컨테이너에서 분리합니다.CTRL+q 호스트의 공유 볼륨에 있는 파일을 나열하면 다음 두 개의 파일이 표시됩니다.
$ ls $mntPoint container1.rxt host.txt이때 컨테이너와 호스트 간에 파일을 공유합니다. 두 컨테이너 간에 파일을 공유하려면
myubi2라는 다른 컨테이너를 실행합니다.myubi2라는 컨테이너를 실행하고호스트의 hostvolume볼륨 이름으로 정의된 디렉터리를 컨테이너의/containervolume2디렉터리에 매핑합니다.$ podman run -it --name myubi2 -v hostvolume:/containervolume2 registry.access.redhat.com/ubi8/ubi /bin/bash컨테이너의 공유 볼륨에 있는 파일을 나열합니다.
# ls /containervolume2 container1.txt host.txtmyubi1 컨테이너 내부에서 생성한 host.txt파일과container1.txt파일을 확인할 수 있습니다./containervolume2디렉터리에 텍스트 파일을 생성합니다.# echo "Hello from container 2" >> /containervolume2/container2.txt-
CTRL+p 및를 사용하여 컨테이너에서 분리합니다.CTRL+q 호스트의 공유 볼륨에 있는 파일을 나열하고 세 개의 파일이 표시됩니다.
$ ls $mntPoint container1.rxt container2.txt host.txt