도커 볼륨은 도커 컨테이너에 의해 생성되고 사용되는 지속적인 데이터를 처리하는 우선적인 방법입니다. 이를 이해하기 위해 윈도우에서 도커 볼륨을 생성하는 방법을 알아보겠습니다. 또한 이를 관리하는 방법도 배우게 될 것입니다!
이 블로그 포스트에는 TechSnips 기고자 Matt McElreath가 제작한 동영상이 함께 있습니다. 보고 싶다면 시청하거나, 텍스트를 선호한다면 계속 읽어보세요!
지속적인 데이터 저장
컨테이너에 지속적인 데이터를 저장하려면 몇 가지 옵션이 있습니다. 첫 번째로, 바인드 마운트를 사용하는 방법을 보여드리겠습니다. 현재 C:\ 폴더에 있는 data 폴더에 있습니다. 이 폴더의 내용을 나열하면 다섯 개의 텍스트 파일이 있음을 확인할 수 있습니다.

이 폴더를 컨테이너에서 사용할 수 있도록 하려면 컨테이너를 시작할 때 이를 마운트할 수 있습니다.
이제 docker run
을 사용하여 컨테이너를 실행해 보겠습니다. 대화형 모드로 이 컨테이너를 실행하고, -V
를 지정합니다. 여기서 데이터 폴더의 경로를 입력한 다음 콜론(:)을 추가하고, 이 폴더를 컨테이너 내에서 마운트할 경로를 지정합니다.
이를 위해 C:\shareddata 폴더를 지정할 것입니다. 그런 다음 Windows 서버 코어 이미지를 지정하고 마지막으로 컨테이너 내부에서 PowerShell을 실행하도록 지정할 것입니다.
새 컨테이너 내부에 들어가면 C:\의 내용을 나열하면 shareddata 폴더가 있는 것을 볼 수 있습니다.

그 폴더로 이동하여 내용을 나열해보겠습니다. 이곳에는 컨테이너 호스트에 위치한 다섯 개의 테스트 파일이 있습니다.

I can also create files in this folder, which will be available to other containers or my container host. Let’s go ahead and run a new item to create a file called containertest.

위에서 보듯이 새 파일이 컨테이너 내부에서 생성되었습니다. 이제 exit
를 실행하여 이 컨테이너를 종료합니다.
docker ps
를 실행하면 현재 실행 중인 컨테이너가 없음을 알 수 있습니다.

Docker 볼륨에서 데이터 열거하기
이제 컨테이너 호스트에서 다시 데이터 폴더의 내용을 나열해보겠습니다.

컨테이너 내부에서 생성된 containertest라는 새 파일을 볼 수 있습니다. 그러나 바인드 마운트는 일부 기능이 제한적이므로 우리가 하려는 작업을 수행하는 용도로는 볼륨이 선호됩니다. 볼륨을 사용하기 위해 동일한 명령을 실행할 수 있지만 이번에는 몇 가지 작은 차이점이 있습니다. 볼륨을 지정하는 곳에서 컨테이너 호스트 파일 시스템의 경로 대신에 hostdata라는 단어를 사용하여 생성 및 사용할 볼륨의 이름으로 사용하겠습니다.
새 컨테이너 내부에서 C:\의 내용을 나열하면 다시 shareddata라는 폴더가 있는 것을 볼 수 있습니다.

해당 폴더의 내용을 나열하면 현재는 비어 있습니다. 왜냐하면 빈 볼륨을 생성했기 때문입니다. 이제 실행 중인 컨테이너에서 나가려면 Ctrl-P-Q를 실행하면 됩니다. 이렇게 하면 컨테이너는 백그라운드에서 계속 실행됩니다.
컨테이너 호스트에서 docker volume ls
를 실행합니다. 이렇게 하면 현재 컨테이너 호스트에 있는 볼륨이 나열됩니다. 나는 hostdata라는 볼륨을 가지고 있으며, 이는 docker run
명령어에서 지정한 대로 생성되었습니다.

docker ps
를 실행하면 실행 중인 컨테이너를 볼 수 있습니다.

docker stop
을 사용하여 해당 컨테이너를 중지합니다. 이제 실행 중인 컨테이너가 없습니다.

docker rm
을 실행하여 중지된 컨테이너를 제거합니다. 볼륨을 다시 나열하면 hostdata 볼륨이 여전히 사용 가능하고 새로운 컨테이너에 마운트할 수 있음을 알 수 있습니다.

Docker 볼륨 생성하기
볼륨을 생성하는 또 다른 방법은 docker volume create
명령어를 사용하는 것입니다. 이름을 지정하지 않으면 도커는 임의의 긴 문자열로 이름을 지정합니다. 그렇지 않으면 여기에서 이름을 지정할 수 있습니다. 나는 이 볼륨을 logdata라고 부르겠습니다. 이제 볼륨이 다시 나열될 때 목록에 표시됩니다.

새로운 컨테이너에 이를 마운트하겠습니다. 다시 docker run
을 사용하고 볼륨에 방금 생성한 볼륨을 지정하고 c:\logdata에 마운트하면 됩니다.
컨테이너 내부에서 logdata 폴더로 이동하여 몇 개의 파일을 만드세요. 현재 이 디렉토리에는 파일이 없으므로, 파일을 생성해주세요.
이제 이 디렉토리에 두 개의 로그 파일이 있습니다.

여전히 실행 중인 컨테이너에서 Ctrl-P-Q를 다시 실행하여 이 컨테이너에서 나가세요. 해당 컨테이너가 실행 중인 동안, 동일한 볼륨을 마운트하여 새로운 컨테이너를 시작하세요.
새 컨테이너에서 logdata 폴더에 대한 목록을 실행하면, 두 개의 로그 파일이 공유되었음을 확인할 수 있습니다.

이제 이 컨테이너에서 나가세요. 여전히 실행 중인 컨테이너 한 개와 종료된 컨테이너 두 개가 남아있어야 합니다.

이제 모든 실행 중인 컨테이너를 중지한 다음, 모든 종료된 컨테이너를 제거하려면 docker rm
을 실행하세요.

다시 볼륨을 나열하세요. logdata 볼륨은 향후 컨테이너에 마운트할 수 있는 상태로 유지되어야 합니다.

docker volume
을 실행하면 해당 명령에 대한 사용 도움말을 얻을 수 있습니다.

Docker 볼륨 검사
이미 create
를 살펴보았으므로, 이제 inspect
로 넘어가겠습니다. docker volume inspect
를 logdata 볼륨에 대해 실행하면, 해당 볼륨의 속성이 반환되며, 이는 컨테이너 호스트의 물리적 경로인 마운트 포인트를 포함합니다.

이 경로를 Invoke-Item
을 사용하여 열어서 살펴봅시다. logdata 폴더 아래에는 data라는 폴더가 있습니다. 해당 폴더를 열면, 이전에 컨테이너에서 생성된 파일들을 확인할 수 있습니다.

Docker 볼륨 삭제
볼륨을 삭제하려면 docker volume rm
을 실행한 다음 삭제하려는 볼륨의 이름을 입력하면 됩니다.
이제 볼륨을 나열하면 logdata가 더 이상 표시되지 않습니다.

마지막으로, 사용되지 않는 로컬 볼륨을 모두 제거하기 위해 prune
을 사용할 수 있습니다. 이 명령은 실행 중이거나 중지된 컨테이너에 마운트되지 않은 모든 볼륨을 삭제합니다.

이 명령에는 주의가 필요하므로, 확인 메시지와 프롬프트가 표시되어 진행 여부를 다시 한 번 확인합니다. Y
를 입력하고 엔터를 누르면 삭제된 볼륨이 표시됩니다.
볼륨을 다시 나열하면 모든 볼륨이 삭제된 것을 확인할 수 있습니다.

요약
이 블로그 포스트에서는 Windows에서 Docker 볼륨을 관리하는 방법에 대해 개괄적으로 알아보았습니다. Docker는 훌륭한 컨테이너 플랫폼입니다. Windows 지원 및 Docker 볼륨 관리 기술을 익히면 여러분은 멈출 수 없을 것입니다!