docker volume에 대해 간단하게 알아봅시다.

도커 2023. 2. 4. 19:40

 안녕하세요. 이번 시간에는 docker의 볼륨 (volume)에 대해 간단하게 알아보겠습니다.

 


 먼저 제 fastapi 프로젝트 구조는 위와 같습니다. 단순화 하기 위해 main.py와 test_router.py만 구현해 놓았습니다.

 

 먼저 main.py입니다. test_router의 router만 추가하였습니다.

 

 

 다음에, test_router에는, get /test만 있습니다. 간단하게 api가 호출이 되면, 204 status code만 돌려줍니다. 서버 자체는 굉장히 간단해서 따로 설명을 드리지 않아도 되겠네요.

 

 

 Dockerfile부터 보겠습니다. 필요한 패키지들 깐 다음에, 마지막에 cmd로 서버를 실행시킵니다. 8000번 포트를 열어놓았습니다.

 

  다음에 docker-compose.yml 부분입니다. volumes: 부분을 보면, fastpy:/myapp 이라고 되어 있습니다. 이것은 제 fast 컨테이너 안의 /myapp 이라는 디렉토리가, 볼륨 fastpy과 연결된다는 것입니다. mount 된다고 이해하시면 편합니다. 예를 들어, 경로 E는 제 usb와 연결되고, 경로 G는 제 스마트폰에 있는 저장 장치와 연결되는 것과 비슷하다고 보시면 됩니다.

 

 이제 docker-compose up을 해서, 컨테이너를 하나 올려 보겠습니다.

 


 저는 docker desktop이 있으니, 이 안에서 볼륨 정보, 컨테이너 등을 보겠습니다. 볼륨을 보면 docker_fastpy가 있는 것을 확인할 수 있어요. 여기로 들어가 보겠습니다.

 

 Data 부분을 보면, 아무것도 없음을 볼 수 있어요. 이는, 아무런 데이터가 제가 할당한 volume에 저장되어 있지 않기 때문입니다.

 

 

 이제 컨테이너 내의 /myapp에서 12345라는 문자열을 1.txt에 저장해 보겠습니다.

 

 그리고 나서, 다시 docker_fastpy volume을 보면, 아까와는 다르게 1.txt가 올라왔음을 확인할 수 있습니다. 어디 있는지 확인해 보겠습니다.

 

 저는 윈도우의 wsl을 쓰고 있습니다. 그리고 docker-desktop을 쓰고 있어서 아래와 같이 경로가 나옵니다. docker_fastpy의 _data에 들어가 보면, 1.txt라는 텍스트가 하나 있음을 알 수 있습니다. 열어봅시다.

 

 

 12345가 있습니다. 특히 데이터 베이스에서 데이터를 저장할 때, 설정값을 저장해야 할 필요가 있을 때 많이 쓰이니, 간단하게라도 알아두시면 도움이 되지 않을까 싶습니다.