Windows에서 간편하게 Docker 볼륨 생성하기

도커 볼륨은 도커 컨테이너에 의해 생성되고 사용되는 지속적인 데이터를 처리하는 우선적인 방법입니다. 이를 이해하기 위해 윈도우에서 도커 볼륨을 생성하는 방법을 알아보겠습니다. 또한 이를 관리하는 방법도 배우게 될 것입니다!

이 블로그 포스트에는 TechSnips 기고자 Matt McElreath가 제작한 동영상이 함께 있습니다. 보고 싶다면 시청하거나, 텍스트를 선호한다면 계속 읽어보세요!

지속적인 데이터 저장

컨테이너에 지속적인 데이터를 저장하려면 몇 가지 옵션이 있습니다. 첫 번째로, 바인드 마운트를 사용하는 방법을 보여드리겠습니다. 현재 C:\ 폴더에 있는 data 폴더에 있습니다. 이 폴더의 내용을 나열하면 다섯 개의 텍스트 파일이 있음을 확인할 수 있습니다.

Multiple text files in the C:\data folder

이 폴더를 컨테이너에서 사용할 수 있도록 하려면 컨테이너를 시작할 때 이를 마운트할 수 있습니다.

이제 docker run을 사용하여 컨테이너를 실행해 보겠습니다. 대화형 모드로 이 컨테이너를 실행하고, -V를 지정합니다. 여기서 데이터 폴더의 경로를 입력한 다음 콜론(:)을 추가하고, 이 폴더를 컨테이너 내에서 마운트할 경로를 지정합니다.

이를 위해 C:\shareddata 폴더를 지정할 것입니다. 그런 다음 Windows 서버 코어 이미지를 지정하고 마지막으로 컨테이너 내부에서 PowerShell을 실행하도록 지정할 것입니다.

docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell

새 컨테이너 내부에 들어가면 C:\의 내용을 나열하면 shareddata 폴더가 있는 것을 볼 수 있습니다.

Listing directory contents in a Docker container

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

Files on the host

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.

Creating a file on the container host

위에서 보듯이 새 파일이 컨테이너 내부에서 생성되었습니다. 이제 exit를 실행하여 이 컨테이너를 종료합니다.

docker ps를 실행하면 현재 실행 중인 컨테이너가 없음을 알 수 있습니다.

Looking for running containers

Docker 볼륨에서 데이터 열거하기

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

Listing files on the container host

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

새 컨테이너 내부에서 C:\의 내용을 나열하면 다시 shareddata라는 폴더가 있는 것을 볼 수 있습니다.

Listing files

해당 폴더의 내용을 나열하면 현재는 비어 있습니다. 왜냐하면 빈 볼륨을 생성했기 때문입니다. 이제 실행 중인 컨테이너에서 나가려면 Ctrl-P-Q를 실행하면 됩니다. 이렇게 하면 컨테이너는 백그라운드에서 계속 실행됩니다.

컨테이너 호스트에서 docker volume ls를 실행합니다. 이렇게 하면 현재 컨테이너 호스트에 있는 볼륨이 나열됩니다. 나는 hostdata라는 볼륨을 가지고 있으며, 이는 docker run 명령어에서 지정한 대로 생성되었습니다.

Listing Docker volumes

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

Listing running containers

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

Stopping a Docker container

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

Listing Docker volumes

Docker 볼륨 생성하기

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

Creating a new Docker volume

새로운 컨테이너에 이를 마운트하겠습니다. 다시 docker run을 사용하고 볼륨에 방금 생성한 볼륨을 지정하고 c:\logdata에 마운트하면 됩니다.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

컨테이너 내부에서 logdata 폴더로 이동하여 몇 개의 파일을 만드세요. 현재 이 디렉토리에는 파일이 없으므로, 파일을 생성해주세요.

PS> New-Item -Name Log1.txt -ItemType File
PS> New-Item -Name Log2.txt -ItemType File

이제 이 디렉토리에 두 개의 로그 파일이 있습니다.

Two files in C:\logdata

여전히 실행 중인 컨테이너에서 Ctrl-P-Q를 다시 실행하여 이 컨테이너에서 나가세요. 해당 컨테이너가 실행 중인 동안, 동일한 볼륨을 마운트하여 새로운 컨테이너를 시작하세요.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

새 컨테이너에서 logdata 폴더에 대한 목록을 실행하면, 두 개의 로그 파일이 공유되었음을 확인할 수 있습니다.

Two log files being shared with containers

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

Two containers still running

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

Removing Docker containers

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

Volume still available

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

Docker volume syntax

Docker 볼륨 검사

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

Inspecting Docker volumes

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

Files created earlier

Docker 볼륨 삭제

볼륨을 삭제하려면 docker volume rm을 실행한 다음 삭제하려는 볼륨의 이름을 입력하면 됩니다.

> docker volume rm logdata

이제 볼륨을 나열하면 logdata가 더 이상 표시되지 않습니다.

Listing Docker volumes

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

Inspecting the prune parameter

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

볼륨을 다시 나열하면 모든 볼륨이 삭제된 것을 확인할 수 있습니다.

No Docker volumes exist

요약

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

Source:
https://adamtheautomator.com/create-docker-volume/