Red Hat Training

A Red Hat training course is available for RHEL 8

5.11. 두 컨테이너 간 파일 공유

컨테이너를 삭제한 경우에도 볼륨을 사용하여 컨테이너에 데이터를 유지할 수 있습니다. 볼륨은 여러 컨테이너 간에 데이터를 공유하는 데 사용할 수 있습니다. 볼륨은 호스트 시스템에 저장된 폴더입니다. 컨테이너와 호스트 간에 볼륨을 공유할 수 있습니다.

주요 이점은 다음과 같습니다.

  • 컨테이너 간에 볼륨을 공유할 수 있습니다.
  • 볼륨은 백업 또는 마이그레이션이 더 쉽습니다.
  • 볼륨이 컨테이너 크기를 늘리지 않습니다.

사전 요구 사항

  • container-tools 모듈이 설치되어 있습니다.

절차

  1. 볼륨을 생성합니다.

    $ podman volume create hostvolume
  2. 볼륨에 대한 정보를 표시합니다.

    $ 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 로 변경됩니다.

  3. mntPoint 변수에 저장된 경로를 사용하여 디렉터리 내에 텍스트 파일을 생성합니다.

    $ echo "Hello from host" >> $mntPoint/host.txt
  4. the mntPoint 변수에 의해 정의된 디렉터리에 있는 모든 파일을 나열합니다.

    $ ls $mntPoint/
    host.txt
  5. myubi1 이라는 컨테이너를 실행하고 호스트의 hostvolume 볼륨 이름으로 정의된 디렉터리를 컨테이너의 /containervolume1 디렉터리에 매핑합니다.

    $ podman run -it --name myubi1 -v hostvolume:/containervolume1 registry.access.redhat.com/ubi8/ubi /bin/bash

    the mntPoint 변수(-v $mntPoint:/containervolume1)에서 정의한 볼륨 경로를 사용하는 경우 podman volume prune 명령을 실행할 때 데이터 가 손실되어 사용되지 않는 볼륨을 제거할 수 있습니다. 항상 -v hostvolume_name:/containervolume_name 을 사용합니다.

  6. 컨테이너의 공유 볼륨에 있는 파일을 나열합니다.

    # ls /containervolume1
    host.txt

    호스트에서 생성한 host.txt 파일을 확인할 수 있습니다.

  7. /containervolume1 디렉터리에 텍스트 파일을 생성합니다.

    # echo "Hello from container 1" >> /containervolume1/container1.txt
  8. CTRL+p 및 CTRL+ q 를 사용하여 컨테이너에서 분리합니다.
  9. 호스트의 공유 볼륨에 있는 파일을 나열하면 다음 두 개의 파일이 표시됩니다.

    $ ls $mntPoint
    container1.rxt  host.txt

    이때 컨테이너와 호스트 간에 파일을 공유합니다. 두 컨테이너 간에 파일을 공유하려면 myubi2 라는 다른 컨테이너를 실행합니다.

  10. myubi2 라는 컨테이너를 실행하고 호스트의 hostvolume 볼륨 이름으로 정의된 디렉터리를 컨테이너의 /containervolume2 디렉터리에 매핑합니다.

    $ podman run -it --name myubi2 -v hostvolume:/containervolume2 registry.access.redhat.com/ubi8/ubi /bin/bash
  11. 컨테이너의 공유 볼륨에 있는 파일을 나열합니다.

    # ls /containervolume2
    container1.txt host.txt

    myubi1 컨테이너 내부에서 생성한 host .txt 파일과 container1.txt 파일을 확인할 수 있습니다.

  12. /containervolume2 디렉터리에 텍스트 파일을 생성합니다.

    # echo "Hello from container 2" >> /containervolume2/container2.txt
  13. CTRL+p 및 CTRL+ q 를 사용하여 컨테이너에서 분리합니다.
  14. 호스트의 공유 볼륨에 있는 파일을 나열하고 세 개의 파일이 표시됩니다.

    $ ls $mntPoint
    container1.rxt  container2.txt host.txt

추가 리소스

  • podman-volume 도움말 페이지