블로그로 돌아가기

Ubuntu 20.04에서 Docker 데이터 볼륨 사용하기

Ubuntu 20.04에서 Docker 데이터 볼륨 사용하기

소개

Docker 데이터 볼륨은 애플리케이션을 컨테이너화할 때 중요한 개념입니다. 이 개념을 아는 것은 신뢰할 수 있는 지속성 및 데이터 관리와 함께 컨테이너화된 애플리케이션의 최상의 경험을 보장하는 데 필수적입니다. 그러나 이 개념은 중요하지만 많은 개발자에게 혼란스럽고 복잡하기도 합니다. 개발자와 DevOps 전문가는 Docker 데이터 볼륨을 설정하는 방법을 이해하고, 올바른 사용법을 파악하며, 다양한 볼륨 유형과 애플리케이션에 적합한 유형을 선택하는 방법을 아는 것이 중요합니다.

이 튜토리얼은 Docker 데이터 볼륨의 개념과 사용법을 설명하는 데 중점을 둡니다. 이 튜토리얼을 마치면 모든 유형의 Docker 데이터 볼륨을 설정하고 작업하는 방법을 마스터하게 됩니다.

사전 요구 사항

이 튜토리얼을 따라 하려면 다음 항목이 필요합니다.

  1. Ubuntu 설치. 다음을 확인해 보세요. Ubuntu 18.04 서버 설정 방법 빠른 참조를 위한 튜토리얼.
  2. sudo 권한이 있는 Ubuntu 사용자. 이 단계는 특히 Linux에 익숙하지 않은 경우 복잡할 수 있습니다. 다음을 읽어보세요. Linux Sudoers 파일 구성 자세한 가이드를 확인하세요.
  3. Docker가 Ubuntu에 설치되어 있어야 합니다. Ubuntu에 Docker를 설치하려면 다음 블로그를 따르십시오. 퍼블릭 클라우드의 Ubuntu에서 Docker를 설치 & 운영하는 방법 블로그.

이 튜토리얼은 Ubuntu에서 Docker를 관리하는 데 중점을 두고 있지만, docker 명령어는 Docker가 설치된 모든 운영 체제에 적용할 수 있습니다.

Docker 컨테이너의 작동 방식 이해

Docker 데이터 볼륨을 완전히 이해하려면 Docker 컨테이너가 어떻게 작동하는지 알아야 합니다. 이 섹션에서는 Docker를 처음 사용하는 사용자를 위해 기본 사항을 설명합니다. Docker의 작동 방식을 알고 있거나 숙련된 Docker 사용자인 경우 이 섹션을 건너뛰고 데이터 볼륨을 시작할 수 있습니다.

Docker 컨테이너를 사용하면 Docker 플랫폼을 설치하여 호스트 운영 체제 위에서 애플리케이션을 실행할 수 있습니다. Docker 플랫폼이 호스트 운영 체제에 설치되기 때문에 호스트 머신과 게스트 애플리케이션 사이에 추상화가 형성됩니다. 가상 머신과 달리 Docker 컨테이너는 호스트 운영 체제와 Linux 커널을 공유합니다. Docker는 호스트 머신 위에 추가 운영 체제를 설치할 필요가 없기 때문에, Docker 애플리케이션은 가볍고 해당 호스트 머신에 Docker가 설치되어 있는 한 모든 호스트 머신에서 액세스할 수 있습니다.

추가 게스트 OS가 없기 때문에 Docker 플랫폼은 호스트 머신과 리소스를 공유합니다. Docker 애플리케이션을 실행하는 것은 빠르지만 리소스를 공유해야 할 때 복잡해집니다. Docker는 데이터 지속성을 위한 자체 메모리나 스토리지를 가지고 있지 않습니다. 이러한 리소스는 호스트 머신에서 제공되어야 합니다. 가상 머신을 사용하는 데 익숙한 사람들은 이러한 리소스 공유 및 관리 프로세스를 어렵게 느낍니다. 적절한 지식이 없으면 예상치 못하고 원치 않는 결과가 발생할 수 있습니다. 이 튜토리얼은 사용자가 Docker 생태계에 익숙하다고 가정하지만, 빠른 복습을 위해 자세한 튜토리얼인 Docker란 무엇인가요? Docker 생태계 개요를 자유롭게 살펴보시기 바랍니다.

Docker 데이터 볼륨을 사용하여 데이터 보존하기

Docker로 작업할 때는 내부에 볼륨을 직접 생성할 수 없습니다. 따라서 데이터를 저장하려면 볼륨이 연결된 Docker 볼륨 컨테이너를 생성해야 합니다. Docker 애플리케이션을 이 데이터 볼륨 컨테이너와 연결하기 위해 Docker’의 --volume-from 명령을 사용하여 컨테이너를 가져와 애플리케이션에 연결합니다.

프로세스를 단계별로 살펴보겠습니다.

  1. 먼저, my-container 라는 새 컨테이너를 아래 명령을 실행하여 생성합니다:
    Docker Data Volumes 1 docker create my-container
    이렇게 하면 /tmp 폴더에 새 컨테이너가 생성됩니다. 필요에 따라 폴더 디렉토리를 변경할 수 있습니다.
  2. 이제 데이터 컨테이너가 준비되었으므로, --volume-from 플래그를 사용하여 새 Ubuntu 컨테이너를 실행한 다음 bash를 실행하여 데이터를 쓸 수 있습니다. tmp 디렉터리는 호스트 머신의 /tmp 폴더에 저장됩니다:
    Docker Data Volumes 2 Run docker container
    The -t 명령줄 옵션은 컨테이너 내부에서 터미널을 호출합니다. -i 플래그는 연결을 대화형(interactive)으로 만듭니다. Ubuntu 컨테이너의 bash 프롬프트에서 다음 디렉터리에 파일을 생성합니다: /tmp:
  3. 마지막으로, 다음 명령을 실행하여 이 bash를 종료합니다: exit 명령어. 다음으로, 아래 명령을 실행합니다:
    Docker Data Volumes 3 New container sample file
    이 디렉터리에서 sample_file을(를) 찾을 수 있습니다. 지정할 볼륨 수에는 제한이 없습니다. 다음 플래그를 사용하여 원하는 만큼 볼륨을 추가할 수 있습니다: --volumes-from 플래그. 또한 원하는 만큼 데이터 볼륨 컨테이너를 생성할 수 있습니다.

호스트와 Docker 컨테이너 간의 데이터 액세스

가상화 경험이 있는 독자라면 이 옵션이 가상 머신의 공유 폴더 옵션과 유사하다는 것을 알 수 있을 것입니다. 여기서는 data-only 컨테이너를 생성하는 대신, Docker 이미지를 사용하여 Docker 애플리케이션을 실행하고 해당 디렉터리 중 하나를 호스트 시스템의 디렉터리 내용으로 덮어씁니다.

일반적인 시나리오는 로그 파일을 호스트 머신에 저장하는 것입니다. 이는 머신 내부로 들어가지 않고도 필요할 때 이 파일들을 분석할 수 있도록 하기 위해 필요할 수 있습니다. 이 시나리오를 위해 귀하가 다음을 사용하고 있다고 가정해 보겠습니다: Docker Nginx 이미지 그리고 로그 파일을 호스트 머신에 저장하려고 합니다. Nginx Docker 이미지는 로그를 다음 디렉터리에 기록하지만, /var/log/nginx 디렉터리, 이는 Docker Nginx 컨테이너 내부의 /var/log/nginx 입니다. 따라서 이 위치는 호스트 머신에서 액세스할 수 없습니다.

목표를 달성하려면 호스트 머신과 Docker Nginx 이미지 간에 로그를 저장할 공유 폴더를 생성해야 합니다. 아래에서 이 과정을 쉬운 단계별 가이드로 설명하겠습니다:

  1. 먼저, 로그를 저장할 호스트 머신의 디렉터리를 생성합니다:
    그런 다음, 아래 명령을 실행하여 컨테이너를 시작합니다:
    Docker run nginx container
  2. run 명령은 몇 가지 인수를 허용하므로, 더 잘 이해하기 위해 세부적으로 나누어 보겠습니다:
    • -p 5000:80: 포트 포워딩을 설정합니다. Nginx 컨테이너는 기본적으로 80 포트에서 대기하며, 이는 Nginx 컨테이너의 80 포트를 호스트 시스템의 5000 포트로 매핑합니다.
    • -d: 프로세스를 분리(detach)하여 백그라운드에서 실행합니다.
    • -v ~/my-nginxlogs:/var/log/nginx: Nginx 컨테이너 내부의 /var/log/nginx 디렉터리를 호스트 머신의 /my-nginxlogs 디렉터리에 연결합니다. 이 : 기호는 호스트의 경로와 컨테이너의 경로를 구분합니다. 호스트 경로가 항상 먼저 옵니다.

이제 Nginx 컨테이너가 실행 중이므로, 먼저 웹 브라우저를 열고 다음 URL을 실행하여 Nginx 서버가 호스트 머신의 5000 포트에서 서비스 중인지 확인합니다: http://localhost:5000. 환영 페이지가 나타나면 Nginx 서버가 준비된 것이며, 해당 서버의 /var/log/nginx 폴더에 로그를 생성하고 있는 것입니다.

호스트 머신의 /my-nginxlogs 폴더를 열면 Docker Nginx 컨테이너의 로그 파일이 여기에 있는 것을 볼 수 있습니다. Nginx 컨테이너가 실행되는 동안 호스트 머신의 /my-nginxlogs 폴더를 변경하면, 변경 사항이 컨테이너의 /var/log/nginx 폴더에도 반영됩니다.

결론

이 튜토리얼에서는 Docker 데이터 볼륨을 이해하기 위해 포괄적인 접근 방식을 취했습니다. 애플리케이션을 위한 볼륨 생성, 호스트와 Docker 컨테이너 간의 데이터 공유, 데이터 유형 및 데이터 보존에 대해 살펴보았습니다. 이는 컨테이너화된 애플리케이션에서 데이터를 보존하고 애플리케이션의 상태 및 구성을 관리하는 데 도움이 될 것입니다.

Docker에 대해 더 자세히 알아보려면 다음 튜토리얼을 확인해 보세요: 저희 블로그:

즐거운 컴퓨팅 되세요!

author

Pranay Kapgate

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.