Data science/MLOps

Docker: 파일 복사 및 볼륨 마운

연금(Pension)술사 2022. 11. 1. 19:22

 

요약

볼륨 마운트은 도커가 관리하는 시스템내 영역을 정의/생성해서, 해당 영역을 다른 컨테이너들이 공유할수 있도록 마운트하는 것이며, 이와 다르게 바인드 마운트은 도커가 관리하지 않는 호스트의 파일시스템에 다른 컨테이너들이 공유할 수 있도록 마운트하는 것이다. 바인드 마운트는 일반적인 리눅스의 디스크 마운트를 다른 서버에서도 쓸 수 있도록 1:N으로 마운트하는 것과 동일하다.

 

파일 복사


컨테이너와의 호스트 간의 파일의 복사는 방향이 중요하다. 도커에서는 컨테이너 -> 호스트, 호스트->컨테이너간의 양방향으로 파일을 복사가 가능하다 (이 때의 호스트는 "도커 엔진을 실행중인 PC을 의미한다).

// 호스트 -> 컨테이너
$ docker cp 호스트경로 컨테이너명:컨테이너_내부경로

// 컨테이너 -> 호스트
$ docker cp 컨테이너명:컨테이너_내부경로 호스트경로

 

볼륨마운트


 

1. 볼륨 마운트: 도커엔진이 관리하는 영역내에 만들어진 볼륨을 컨테이너에 디스크 형태로 마운트함. 즉, 도커가 이미 관리하고 있는 영역인데, 일부 컨테이너한테 할당하는 개념이다. 이 영역은 도커 엔진 위에서 관리되어야한다. 임시목적으로 주로 쓴다.

- 장점:  1) 도커엔진의 관리하에 있기 때문에("var/lib/docker/volumes"), 실수로 "/home/user/documents/"등에 있는 파일들을 지워도 따로 보관된다. 또한, 2) 바인드 마운트에 비해서, 경로의 기재방식이 동일하기 때문에, 환경에 따라 경로지정을 할 필요없다. 예를 들어, Windows에서 만든 docker container을 바인드마운트 했다고 생각하면, "C:\...\"이지만, 리눅스에서는 "/var/" , "/home/..."이하일 수도 있다. 

- 단점: 도커 컨테이너를 통하지 않고서는 직접 접근이 어렵다. 백업을 하려고해도 쉽게 copy해서 가져가기 어렵다.  

 

2. 바인드 마운트: 도커엔진이 관리하하지 않아 되는 기존의 영역(예, 바탕화면, 내 문서 폴더 등에 해당)에 컨테이너에 마운트하는 방식이다. 디렉토리가 아니라 파일단위로도 마운트가 된다. 이 경우는 도커엔진의 관리하에 있지 않기 때문에, 실수로 다른유저들이 데이터를 지우면 같이지워진다.

- 장점: 기존 시스템에서 쓰던 디렉토리를 쉽게 마운트 할 수 있다.

 

정리하자면, 주어진 문제에 따라 다음과 같이 나눌 수 있다.

파일이 지워지면 안된다-> 볼륨마운트

직접 파일을 접근할 일이 많다-> 바인드 마운트

 

마운트 방법은 아래와 같다.

// 볼륨 마운트
$ docker volumn create 볼륨명

// 볼륨 마운트 삭제
$ docker volumn rm 볼륨명

 

 

 

반응형