Docker 실습6: 호스트와 컨테이너의 파일시스템 연결

손지민·2024년 5월 17일

Docker

목록 보기
9/9
post-thumbnail

개요

이전 글까지는 아파치 웹 서버 이미지를 docker hub 에서 pull 받아서 포트 매핑하여 컨테이너를 실행하고, 컨테이너 내부의 index.html 파일에 직접 접근하여 수정해보았습니다.

하지만 이렇게 진행하면 위험한 일이 있을 수 있습니다. 예를 들어, 내부의 index.html 파일을 작업했는데 컨테이너가 사라지면 작업한게 물거품이 될 수 있습니다. 물론 컨테이너가 사라지지 않게하면 되겠지만, 우리가 컨테이너를 사용하는 이유는 필요할 때 언제든 생성/삭제하는 목적이 큽니다.

이 대안으로 호스트의 파일이 바뀌면 컨테이너 내의 파일이 변동되도록 한다면 위의 문제가 해결 될 수 있을 것입니다. 컨테이너가 사라져도 괜찮고, 버전관리도 쉬울 것 입니다.

이번 글에서는 실행환경은 컨테이너에게 맡기고, 파일 수정 작업은 호스트에서 진행하는 방법에 대해 알아보겠습니다.


실습

컨테이너를 만들면서 호스트의 파일시스템과 컨테이너의 파일시스템을 연결합니다.
-v 옵션(또는 --volume 옵션) : 호스트의 파일 시스템과 컨테이너의 파일 시스템을 연결(mount)하는 데 사용합니다. 이를 통해 호스트와 컨테이너 간에 파일과 디렉토리를 공유할 수 있습니다.

방법

  1. 로컬에서 연결할 폴더를 생성하여 index.html 을 작성해둡니다.

  2. docker run -p 8888:80 -v "/mnt/c/Users/lijna/OneDrive/바탕 화면/son/htdocs:/usr/local/apache2/htdocs" httpd 명령어 입력:
    형식: docker run -p {호스트 포트}:{컨테이너 포트} -v [호스트 디렉토리]:[컨테이너 디렉토리] httpd

  3. http://localhost:8888/index.html 접속하면 호스트에서 작성한 index.html 파일이 실행되어야 정상.

  4. 호스트에 index.html 을 수정하면 적용된다.


장점

  1. 호스트와 컨테이너 간 파일 공유:
    호스트의 파일을 컨테이너에서 사용할 수 있게 하거나, 컨테이너에서 생성된 파일을 호스트에서 접근할 수 있게 합니다.

  2. 데이터 지속성:
    컨테이너가 삭제되더라도, 호스트에 있는 파일은 유지되므로 데이터를 지속적으로 보존할 수 있습니다.

  3. 개발 편의성:
    개발 중에 호스트에서 코드나 설정 파일을 수정하면, 즉시 컨테이너에 반영되어 실시간으로 테스트할 수 있습니다.


요약

-v 옵션은 Docker 컨테이너와 호스트 간의 파일 시스템을 공유하여 데이터 지속성, 실시간 개발 편의성 등을 제공하는 강력한 기능입니다. 이를 통해 컨테이너 환경을 유지하면서도 호스트 시스템에서의 작업을 효율적으로 수행할 수 있습니다.


출처

후속 도커 자료

https://seomal.com/map/1/129

profile
Developer

0개의 댓글