반응형
이번 게시글에서는 여러 개의 컨테이너를 다루는 방법의 일부와 마운트에 대해서 설명하고 있습니다.
그림과 실습으로 배우는 도커 & 쿠버네티스 - 다섯 번째 이야기
도커와 친숙해지기
위의 목차를 클릭하면 해당 글로 자동 이동 합니다.
여러 개의 컨테이너 다루기
- 책에서는 워드프레스 구축을 통해 연습할 수 있다고 설명한다.
- 워드프레스와 MySQL을 사용하여 실습한다.
- 워드프레스와 MySQL을 각각 컨테이너화 하면, 두 컨테이너가 연결되어 있지 않아서 정상적으로 사용할 수 없다.
- 두 컨테이너를 연결하기 위해서는 가상 네트워크를 만들고, 두 컨테이너를 가상 네트워크에 소속시켜 연결할 수 있다.
# 네트워크 생성
docker network create 네트워크_이름
# 네트워크 삭제
docker network rm 네트워크_이름
# 네트워크 목록 출력
docker network ls
- 중요한 것은 같은 네트워크에서 컨테이너들이 서로 연결하기 위해서는 컨테이너 이름이 필요하다.
- 이런 연습용 조합으로는 '레드마인 + MySQL', '레드마인 + MariaDB', 그리고 '워드프레스 + MariaDB' 도 해볼 수 있다.
파일 복사
- 컨테이너에 있는 파일을 호스트로, 호스트에 있는 파일을 컨테이너로 모두 복사할 수 있다.
docker cp 호스트_경로 컨테이너_이름:컨테이너_경로
- 위의 명령어는 호스트에 있는 파일을 컨테이너로 옮기는 명령어이다.
- 반대의 경우에는 컨테이너 경로가 앞으로 오고 호스트 경로가 뒤로 가면 된다.
볼륨 마운트
- 글쓴이도 자주 해보지 않은 부분이라 자세하게 작성했다.
- 볼륨이란 '스토리지의 한 영역을 분할 한 것' 을 의미한다.
- 마운트는 '연결하다' 라는 의미로, 대상을 연결해 운영체제 또는 소프트웨어의 관리하에 두는 것을 말한다.
- 예를 들어, USB를 컴퓨터에 연결하면, USB는 컴퓨터에 마운트 된다.
- 컨테이너의 경우 생성 및 폐기가 빈번하므로, 매번 데이터를 옮기는 것이 아니라 외부에 두고 사용한다.
- 이것을 '데이터 퍼시스턴시' 라고 말한다.
- 스토리지 마운트는 의미가 모호하여, 대부분 볼륨 마운트라고 많이 한다.
- 그러나 마운트 대상은 볼륨 외에도 디렉토리, 파일, 그리고 메모리도 될 수 있다.
- 도커에서 스토리지 마운트는 두 종류가 존재한다.
- 볼륨 마운트
- 도커 엔진이 관리하는 영역 내에 만들어진 볼륨을 컨테이너에 디스크 형태로 마운트한다.
- 이름만으로 관리가 가능해 다루기 쉽지만 직접 조작이 어려워 임시 목적으로 사용하거나 자주 쓰지는 않지만 지우면 안되는 파일들을 둔다.
- 볼륨을 먼저 생성하고 마운트한다.
- 컨테이너 생성과 동시에 볼륨도 생성하고 마운트가 가능하지만 권장하지 않는 방식이라고 설명하고 있다.
- 바인드 마운트
- 도커 엔진이 관리하지 않는 영역의 기존 디렉토리를 컨테이너에 마운트한다.
- 폴더 속 파일을 열어볼 수 있으므로 자주 사용하는 파일을 둔다.
- 볼륨 마운트의 장, 단점
- 도커 엔진이 관리하므로 사용자가 파일 위치를 신경 쓸 필요가 없다.
- 운영 체제 (환경) 에 의존적이지 않다. 예를 들어, OS가 변경되면 경로 기재 방식이 달라지므로 마운트를 할 대상이 어떤 운영체제에 있는지가 중요하다.
- 도커 제작사에서도 볼륨 마운트 사용을 권장한다.
- 그러나 도커 컨테이너를 경유하지 않으면 볼륨에 직접 접근할 수 없다.
- 만약 동작 중에 볼륨의 내용을 확인하고 싶다면, 후에도 설명하는 복원 과정과 마찬가지로 다른 운영체제 Ubuntu 또는 Busybox 컨테이너를 생성하고, 이 컨테이너에 확인하고 싶은 볼륨을 마운트 한 뒤 확인할 수 있다.
- 백업이 어렵다는 단점이 있다.
- 바인드 마운트의 장,단점
- 기존과 동일한 방식으로 파일을 사용할 수 있다.
- 즉, 도커 엔진과는 무관하다.
- 그러나 운영 체제 (환경) 에 의존적이므로 도커 엔진이 동작하고 있는 운영체제에 따라서 설정이 바뀌는 경우도 있다.
- 파일을 직접 편집해야 할 일이 많으면 바인드 마운트, 그렇지 않으면 볼륨 마운트를 사용하면 된다.
- 추가로 임시 메모리 마운트도 있다.
- 주 메모리 영역을 마운트하므로, 읽기 쓰기 속도가 빠르다.
- 그러나 도커 엔진이 정지되거나 호스트가 재부팅되면 내용이 소멸된다.
명령어
# 볼륨 생성
docker volume create 볼륨_이름
# 볼륨 삭제
docker volume rm 볼륨_이름
# 컨테이너 생성 시 바인드 마운트
docker run ... -v 스토리지_실제_경로:컨테이너_마운트_경로
# 컨테이너 생성 시 볼륨 마운트 (볼륨 생성 이후)
docker run ... -v 볼륨_이름:컨테이너_마운트_경로
- 이제 볼륨 백업에 대해 설명한다.
- 말로 설명하자면 백업할 볼륨을 busybox에 마운트하고, 이 볼륨 내용을 다른 디렉토리에 압축한다음 압축된 디렉토리를 다시 호스트 또는 백업 파일을 저장할 위치에 마운트한다.
docker run --rm -v 볼륨명(백업대상):/source(busybox내 경로) -v 백업할위치:/target(busybox내 경로) busybox tar cvzf /target/파일이름.tar.gz -C /source
- 복원은 이것을 반대로 하면 된다.
- 이 과정은 도커 공식페이지에서 설명하는 볼륨 백업 및 복원 방식이다.
docker run --rm -v 복원대상볼륨:/source(busybox내 경로) -v 백업파일위치:/target(busybox내 경로) busybox tar xzvf /target/백업파일이름.tar.gz -C /source
아무래도 볼륨 마운트는 사용해본 경험이 없는데, 추후 복잡합 프로그램을 동작시키기 위해서는 알아두면 좋은 내용인 것 같다.
Keyword: Docker, 도커, 마운트
추천글
2024.08.12 - [책으로 하는 공부] - [책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 세 번째 이야기
[책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 세 번째 이야기
본 게시글에서는 도커를 설치하기 전 기본 지식에 대해서 다루고 있습니다.윈도우, mac OS 사용자들도 자신의 운영 체제에서 도커가 어떻게 설치되는지 알아가면 좋을 것 같습니다. 그림과 실
se-dobby.tistory.com
2024.08.14 - [책으로 하는 공부] - [책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 네 번째 이야기
[책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 네 번째 이야기
이번 게시글에서는 본격적으로 명령어에 대해서 설명합니다. 그러나 글쓴이는 도커에 어느 정도 친숙한 관계로 명령어에 대해 자세하게 설명하기 보다는 명령어와 관련된 잘 알지 못하는 개념
se-dobby.tistory.com
반응형
'책으로 하는 공부' 카테고리의 다른 글
[책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 일곱 번째 이야기 (0) | 2024.08.18 |
---|---|
[책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 여섯 번째 이야기 (0) | 2024.08.18 |
[책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 네 번째 이야기 (0) | 2024.08.14 |
[책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 세 번째 이야기 (0) | 2024.08.12 |
[책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 두 번째 이야기 (0) | 2024.08.11 |