볼륨??
내가 아는 소리 볼륨 이런 건가? 라고 생각할 수 있다. 물론 아니다.
볼륨이란 docker가 관리하는 특별한 디렉토리이다.
호스트 파일 시스템의 특정 디렉토리를 컨테이너 내부의 디렉토리와 연결하여 데이터를 공유하거나 영구적으로 저장할 수있다.
쉽게 말하자면 볼륨 연결은 폴더를 연결한다고 생각하면 된다.
우리가 아는 vi나 sudo 같은 명령어들이 docker 환경에선 최소 설치이므로 작동하지 않기에 직접 다운로드 받아야 한다.
번거로우므로 내 호스트에서 직접 파일을 수정해서 넘겨주면 더 편리한 접근이 가능하다.
볼륨 연결을 통해 얻을 수 있는 장점을 간단히 정리하겠다.
- 데이터 영속성: 컨테이너가 삭제되거나 재시작되어도 볼륨에 저장된 데이터는 유지된다.
- 데이터 공유: 여러 컨테이너가 동일한 볼륨을 사용할 수 있으므로 데이터를 쉽게 공유할 수 있다.
- 백업 및 복원: 볼륨을 통해 데이터의 백업 및 복원이 용이하다.
그럼 지금부터 실습해보자!
볼륨 연결 실습
먼저 이렇게 apache 서버를 실행시킨다.
이제 exec -it 명령어로 실행되고 있는 컨테이너를 bash 환경에서 접근할 것이다.
이렇게 연결을 했고 bash 환경으로 들어가기에 성공했다.
여기서 index.html에 접근하여 파일을 수정하면 될 거라고 생각한다. 시도해보자.
실행이 되질 않는다.. 알아보니 이미지에 들어있는 os는 최소설치 이므로 vi나 sudo같은 명령어들을 쓰기 위해선 하나하나 다 깔아야 한다고 한다. 번거롭기 그지없다..
stop 하여 컨테이너를 중지시키고 다르게 실행을 시켜보자
PS C:\Users\user> docker run -d -p 8080:80 -v c:\Users\sungmin\webapp:/usr/local/apache2/htdocs httpd
나는 이 명령어를 사용해줬다. 이게 어떤 말인가 하면
호스트의 c:\Users\sungmin\webapp 디렉토리를 Apache 웹 서버의 기본 문서 루트인 /usr/local/apache2/htdocs에 연결 후
호스트의 포트 8080을 컨테이너의 포트 80에 매핑하여 httpd 컨테이너를 백그라운드에서 실행한다는 의미이다.
-v 옵션을 통해 HOST와 CONTAINER 간 디렉토리를 손쉽게 마운트 할 수 있다.
현재 상태에선 웹 서버에 접근하면 host에 아무것도 없기에
vscode를 관리자 모드로 들어가서
이렇게 html 코드를 짜주면??
이렇게 연결이 되는 것을 확인했다!
오늘의 정리 :
- 호스트OS와 컨테이너간 디렉토리 마운트를 위해서는 볼륨을 이용하자. (docker run -v [HOST]:[CONTAINER])
다음 가상화 시간엔 dockerfile에 대해 알아보겠다
'가상화 > Docker' 카테고리의 다른 글
[docker] dockerfile 자세히 알아보기 (42) | 2024.07.24 |
---|---|
[docker] exec 명령어 (33) | 2024.07.11 |
[docker] dit 옵션과 attach (27) | 2024.07.09 |
포트포워딩 알아보기 (feat. Docker) (52) | 2024.06.26 |
도커(Docker)란? (61) | 2024.06.11 |