Docker Volume Create 사용법 완벽 가이드! Docker 볼륨 생성하기

Docker에서는 컨테이너를 삭제하면 컨테이너 내부에 저장된 데이터도 함께 삭제됩니다. 따라서 데이터베이스나 웹사이트 업로드 파일처럼 지속적으로 보관해야 하는 데이터는 별도의 저장 공간을 사용해야 합니다.

이때 가장 많이 사용하는 기능이 바로 Docker Volume입니다. Docker Volume은 컨테이너와 독립적으로 데이터를 저장하는 공간이며, 컨테이너를 삭제하거나 다시 생성하더라도 데이터는 그대로 유지됩니다.

Docker는 컨테이너 실행 시 자동으로 Volume을 생성할 수도 있지만, 실제 운영 환경에서는 필요한 Volume을 미리 생성하여 체계적으로 관리하는 경우가 대부분입니다.

이럴 때 사용하는 명령어가 바로 docker volume create입니다.

Docker Volume Create는 새로운 Docker Volume을 생성하는 명령어입니다. 생성된 Volume은 Docker가 직접 관리하며 여러 컨테이너에서 함께 사용할 수도 있습니다.

이번 글에서는 Docker Volume Create의 개념부터 기본 사용법, 주요 옵션, 실무 활용 사례까지 자세히 알아보겠습니다.

Docker Volume Create란 무엇인가?

Docker Volume Create는 새로운 Docker Volume을 생성하는 명령어입니다.

생성된 Volume은 Docker가 관리하는 영구 저장 공간으로 사용되며 컨테이너와 독립적으로 존재합니다.

컨테이너를 삭제하거나 다시 생성하더라도 Volume은 삭제되지 않으므로 데이터를 안전하게 유지할 수 있습니다.

Docker Volume Create는 언제 사용하는가?

다음과 같은 상황에서 자주 사용됩니다.

  • MySQL 데이터 저장
  • PostgreSQL 데이터 저장
  • Redis 데이터 저장
  • WordPress 업로드 파일 저장
  • 웹 서버 로그 저장
  • 운영 서버 초기 구축

상태를 유지해야 하는 서비스를 운영할 때 반드시 사용하는 기능입니다.

Docker Volume Create 기본 사용법

가장 기본적인 사용 방법입니다.

docker volume create my_volume

실행하면 생성된 Volume 이름이 출력됩니다.

my_volume

이제 my_volume이라는 Docker Volume이 생성되었습니다.

생성된 Volume 확인

현재 생성된 Volume 목록을 확인합니다.

docker volume ls

출력 예시는 다음과 같습니다.

DRIVER    VOLUME NAME
local     my_volume

생성한 Volume이 정상적으로 등록된 것을 확인할 수 있습니다.

여러 개의 Volume 생성

서비스별로 Volume을 분리하면 관리하기 쉽습니다.

docker volume create mysql_data
docker volume create nginx_logs
docker volume create wordpress_upload
docker volume create backup_volume

서비스마다 독립적인 저장 공간을 사용할 수 있습니다.

Driver 지정하여 생성

기본 Driver는 local입니다.

직접 Driver를 지정하려면 다음과 같이 실행합니다.

docker volume create \
--driver local \
my_volume

일반적인 Linux 서버에서는 대부분 local Driver를 사용합니다.

Label 지정

Volume에 Label을 추가하면 관리가 더욱 편리합니다.

docker volume create \
--label service=mysql \
mysql_data

프로젝트나 서비스별로 Volume을 분류할 수 있습니다.

생성과 동시에 컨테이너에서 사용

생성한 Volume을 컨테이너에 연결합니다.

docker run -d \
--name mysql \
-v mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:8

MySQL 데이터는 mysql_data Volume에 저장됩니다.

Volume 이름 작성 방법

Volume 이름은 용도를 쉽게 알 수 있도록 작성하는 것이 좋습니다.

예를 들면 다음과 같습니다.

  • mysql_data
  • postgres_data
  • redis_data
  • nginx_logs
  • wordpress_upload
  • backup_volume

이처럼 이름만 보더라도 어떤 서비스에서 사용하는 Volume인지 쉽게 확인할 수 있습니다.

Docker Volume Create의 특징

Docker Volume Create는 다음과 같은 특징을 가지고 있습니다.

  • Docker에서 자동 관리
  • 영구 저장 지원
  • 컨테이너와 독립적
  • 여러 컨테이너 공유 가능
  • 백업 및 복원 가능
  • 운영 환경에 적합

Docker 데이터를 안전하게 저장하기 위한 가장 기본적인 명령어입니다.

Docker Volume Create 실무 활용 예제

Docker Volume Create는 운영 서버에서 데이터를 안전하게 보관하기 위해 가장 먼저 사용하는 명령어입니다. 데이터베이스, 웹 서버, 로그 저장소 등 다양한 서비스에서 미리 Volume을 생성해 두면 데이터 관리와 유지보수가 훨씬 쉬워집니다.

MySQL 데이터 저장용 Volume 생성

MySQL 데이터베이스를 저장할 Volume을 생성합니다.

docker volume create mysql_data

생성된 Volume은 MySQL 데이터가 저장되는 공간으로 사용됩니다.

Nginx 로그 저장용 Volume 생성

웹 서버 로그를 영구적으로 보관하기 위한 Volume입니다.

docker volume create nginx_logs

로그를 컨테이너 외부에 저장하여 컨테이너를 삭제해도 로그를 유지할 수 있습니다.

WordPress 업로드 저장소 생성

WordPress 이미지와 첨부 파일을 저장하는 Volume을 생성합니다.

docker volume create wordpress_upload

업로드 파일이 안전하게 보관되어 컨테이너 재생성 시에도 그대로 유지됩니다.

생성한 Volume을 컨테이너에 연결

생성한 Volume을 MySQL 컨테이너에서 사용하는 예제입니다.

docker run -d \
--name mysql \
-v mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:8

데이터베이스 파일은 모두 mysql_data Volume에 저장됩니다.

Volume 생성 여부 확인

현재 생성된 Volume을 확인합니다.

docker volume ls

출력 예시는 다음과 같습니다.

DRIVER    VOLUME NAME
local     mysql_data
local     nginx_logs
local     wordpress_upload

필요한 Volume이 정상적으로 생성되었는지 확인할 수 있습니다.

Linux 서버 문제 해결

운영 서버에서 MySQL 컨테이너를 최신 버전으로 교체해야 하는 상황이 발생했습니다.

기존에는 데이터를 컨테이너 내부에 저장하고 있었기 때문에 컨테이너를 삭제하면 데이터도 함께 삭제되는 문제가 있었습니다.

이를 해결하기 위해 먼저 새로운 Volume을 생성했습니다.

docker volume create mysql_data

이후 생성한 Volume을 연결하여 MySQL 컨테이너를 실행했습니다.

docker run -d \
--name mysql \
-v mysql_data:/var/lib/mysql \
mysql:8

며칠 후 MySQL 이미지를 최신 버전으로 교체하기 위해 기존 컨테이너를 삭제하고 다시 생성했습니다.

데이터는 모두 Volume에 저장되어 있었기 때문에 데이터베이스 손실 없이 업그레이드를 완료할 수 있었습니다.

이처럼 운영 환경에서는 컨테이너보다 데이터를 먼저 보호하는 것이 가장 중요합니다.

Docker Volume Create 사용 시 주의사항

Docker Volume Create를 사용할 때는 다음 사항을 알아두는 것이 좋습니다.

첫 번째는 Volume 이름을 서비스별로 명확하게 지정하는 것이 좋습니다.

예를 들어 mysql_data, redis_data, nginx_logs처럼 이름만 보아도 용도를 알 수 있도록 작성하면 관리가 편리합니다.

두 번째는 Volume은 컨테이너를 삭제해도 자동으로 삭제되지 않습니다.

더 이상 사용하지 않는 Volume은 별도로 관리하고 필요 시 삭제해야 합니다.

세 번째는 중요한 데이터가 저장되는 Volume은 정기적으로 백업하는 것이 좋습니다.

Docker Volume도 저장 장치 장애가 발생하면 데이터를 복구하기 어려울 수 있습니다.

네 번째는 여러 컨테이너가 하나의 Volume을 공유할 수 있지만 동시에 데이터를 수정하는 환경에서는 데이터 충돌이 발생하지 않도록 설계해야 합니다.

Best Practice

Docker Volume Create를 사용할 때는 다음과 같은 방법을 추천합니다.

  • 서비스 실행 전에 필요한 Volume을 미리 생성합니다.
  • Volume 이름은 서비스별로 일관성 있게 관리합니다.
  • 데이터베이스는 반드시 전용 Volume을 사용합니다.
  • 중요한 Volume은 정기적으로 백업합니다.
  • 사용하지 않는 Volume은 주기적으로 정리합니다.
  • 운영 환경에서는 Docker가 관리하는 Volume 사용을 권장합니다.

이러한 방법을 적용하면 Docker 데이터를 더욱 안전하고 체계적으로 관리할 수 있습니다.

자주 묻는 질문

Docker Volume은 자동으로 생성되지 않나요?

네.

docker run -v 옵션을 사용할 때 존재하지 않는 Volume이면 Docker가 자동으로 생성합니다.

하지만 운영 환경에서는 미리 생성하여 관리하는 방식을 권장합니다.

Volume 이름은 중복될 수 있나요?

아니요.

동일한 이름의 Volume은 하나만 존재합니다.

생성한 Volume은 어디에 저장되나요?

기본적으로 Docker Host 내부의 Docker 관리 디렉터리에 저장됩니다.

정확한 위치는 docker volume inspect 명령으로 확인할 수 있습니다.

Volume을 미리 생성하는 이유는 무엇인가요?

서비스별 저장 공간을 체계적으로 관리할 수 있으며 백업과 유지보수가 훨씬 쉬워집니다.

마무리

Docker Volume Create는 Docker에서 영구 저장 공간을 생성하기 위한 가장 기본적인 명령어입니다.

데이터베이스, 웹 서버, 로그 파일, 백업 데이터 등 중요한 정보를 컨테이너와 분리하여 안전하게 저장할 수 있으며, 컨테이너를 삭제하거나 다시 생성해도 데이터는 그대로 유지됩니다.

운영 환경에서는 서비스를 배포하기 전에 필요한 Volume을 미리 생성하고 체계적인 이름 규칙으로 관리하는 것이 일반적입니다. Docker Volume Create를 익혀두면 데이터 손실을 예방하고 안정적인 Docker 운영 환경을 구축할 수 있습니다.

댓글 남기기