5.1 바인드 마운트의 아이디어 (bind mounts)
바인드 마운트(bind mounts)를 사용해서 호스트 디렉터리를 컨테이너에 마운트하는 건 Docker의 강력한 기능 중 하나야. 이 기능은 컨테이너가 호스트 시스템에 있는 파일과 디렉터리를 직접 사용할 수 있도록 해줘. 특히 개발, 테스트, 세팅 같은 작업에서 로컬 파일을 컨테이너에 복사하지 않고도 사용할 수 있어서 아주 유용해. 이번 강의에서는 바인드 마운트를 사용하는 방법, 예제, 그리고 베스트 프랙티스를 알아볼 거야.
바인드 마운트는 호스트 시스템의 특정 디렉터리나 파일을 컨테이너에 마운트할 수 있게 해줘. Docker가 관리하고 특별한 디렉터리에 저장되는 볼륨(volume)과는 차이가 있어.
바인드 마운트를 사용하는 장점
- 호스트 파일에 직접 접근 가능: 컨테이너가 호스트에 있는 파일을 직접 사용하고 수정할 수 있어.
- 개발의 편리성: 개발자가 호스트에서 파일을 수정하면, 컨테이너에서 실시간으로 그 변화를 확인할 수 있어.
- 유연성: 호스트의 어느 디렉터리든 컨테이너에 마운트할 수 있어.
바인드 마운트를 마운트하는 명령어
바인드 마운트는 컨테이너 실행 시 -v
또는 --mount
옵션을 사용해서 마운트돼.
5.2 매개변수 -v
사용 예제
1. 호스트 디렉토리를 컨테이너에 마운트하기
호스트 디렉토리를 컨테이너에 마운트하는 간단한 예제:
docker run -d --name my_container -v /path/on/host:/path/in/container nginx
이 예제에서 호스트의 /path/on/host
디렉토리는 컨테이너 내부의 /path/in/container
디렉토리에 마운트됩니다.
2. 호스트 파일을 컨테이너에 마운트하기
개별 파일도 마운트할 수 있어:
docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx
이 예제에서는 호스트의 config.conf
설정 파일이 컨테이너 내부의 nginx.conf
설정 파일로 마운트됩니다.
5.3 --mount
매개변수 사용 예
--mount
파라미터는 다양한 매개변수를 지정할 수 있는 더 상세한 디렉토리 바인드 마운트 방법을 제공해.
1. --mount
를 이용한 디렉토리 마운트
docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx
이 예제는 -v
옵션을 사용하는 이전 예제와 비슷하지만, 더 자세한 문법을 사용해.
2. 읽기 전용 모드로 마운트
docker run -d --name my_container --mount
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx
이 예제에서는 디렉토리가 읽기 전용 모드로 마운트돼서 컨테이너 내부 파일을 변경하지 못하게 해.
5.4 실용적인 예제
웹 애플리케이션을 개발할 때 호스트의 소스 코드 디렉토리를 컨테이너에 마운트할 수 있어.
호스트에서 소스 코드 디렉토리 생성:
mkdir -p ~/my_web_app
echo "안녕하세요, 세상!" > ~/my_web_app/index.html
디렉토리를 마운트하여 컨테이너 실행:
docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx
이제 호스트의 ~/my_web_app 디렉토리에서 변경된 내용이 컨테이너에 바로 반영돼.
예제 2: 설정 파일 사용
호스트의 디렉토리에서 설정 파일을 컨테이너에 마운트할 수도 있어.
호스트에서 설정 파일 생성:
echo "user www-data;" > ~/nginx.conf
echo "worker_processes auto;" >> ~/nginx.conf
설정 파일을 마운트하여 컨테이너 실행:
docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
이 예제에서는 호스트의 Nginx 설정 파일이 컨테이너 내부에서 사용돼.
5.5 마운트된 디렉토리와 파일 확인
docker exec 명령을 사용해서 컨테이너 내부에서 명령을 실행하며 마운트된 디렉토리와 파일 내용을 확인할 수 있어.
예제
디렉토리 내용 확인:
docker exec -it my_container ls /path/in/container
파일 내용 확인:
docker exec -it my_container cat /path/in/container/config.conf
바인딩된 디렉토리 삭제
바인딩된 디렉토리는 Docker에서 직접적으로 관리되지 않아서, 삭제는 호스트 파일 시스템 레벨에서 이루어져.
예제
호스트에서 바인딩된 디렉토리 삭제하기:
rm -r /path/on/host
GO TO FULL VERSION