공부하는 스누피

도커(Docker) 사용법 본문

정리 모음

도커(Docker) 사용법

커피맛스누피 2021. 1. 1. 18:47

도커는 가상 머신을 대체하는 경량 컨테이너 개념을 새롭게 제시한 오픈 플랫폼으로, 애플리케이션들을 빠르게 구축할 수 있도록 한다. 컨테이너는 리눅스 호스트에서 실행되며, 리눅스 namespace를 이용해 시스템 리소스를 분배한다. 이 방법은 기존 가상 머신이 작동하는 방식보다 자원 사용량에 있어 효율적이다. 가상 환경이 기존 OS 위에 사용하고 싶은 OS를 올리는 방식이라면, 컨테이너는 도커가 대신 자원을 관리하기 때문에 오버헤드를 줄였다.

 

다음은 대표적인 도커 사용 사례이다.

 

- 도커 컨테이너를 사용해 애플리케이션을 공유한다.

- 테스트 환경 구축, 실행까지 자동화가 가능하다.

- 개발 환경에서 수정한 애플리케이션을 테스트 환경에 재배포할 수 있다.

- 테스트가 끝나면 상용 환경에 이미지를 쉽게 배포할 수 있다.

 

도커 데스크탑 버전은 아래 링크에서 다운받을 수 있다. 도커 데스크탑은 실행되고 있는 컨테이너를 볼 수 있게 UI를 제공한다. 

docs.docker.com/docker-for-windows/install/

 

Install Docker Desktop on Windows

 

docs.docker.com

 

도커로 우분투 컨테이너 실행해보기

docker run -it --rm ubuntu

cmd나 터미널에서 다음 커맨드를 치면 도커가 우분투 컨테이너를 실행한다. 우분투 이미지가 로컬에 없다면, 자동으로 다운로드한다. 도커 이미지를 다운로드하고 컨테이너가 시작되면 우분투 서버 shell이 실행된다.

 

우분투가 아니더라도 centOS같은 다른 OS 이미지를 다운받아 컨테이너로 실행할 수 있다고 한다.

 

성공하면 다음과 같이 우분투 컨테이너가 실행된다.

도커 이미지 빌드

도커 이미지를 빌드하려면 실행 파일이 있어야 한다. 자바 애플리케이션이면 JAR 파일을 빌드해야 한다.

+ 마이크로서비스일 경우 전체 서비스를 빌드할 필요 없이 필요한 서비스와 의존 프로젝트만 빌드하면 된다. 

 

docker build -t {실행 파일 이름} .

위 명령어로 도커 이미지를 빌드할 수 있고, 빌드된 이미지는 도커 엔진에 로컬로 저장된다. 

저장된 이미지는 도커 앱에서 볼 수 있다.

 

서비스 시작

docker run --rm -p8080:8080 -e "{환경변수}" {이미지 이름}

--rm 옵션: 터미널에서 ctrC를 입력하면 도커가 컨테이너를 중지하는 동시에 제거한다.

-p8080:8080 옵션: 컨테이너의 8080 포트를 도커 호스트의 8080포트에 매핑한다.

-e 옵션: 컨테이너의 환경 변수를 지정할 수 있다.

ex. 스프링의 경우 SPRING_PROFILES_ACTIVE=docker 환경변수를 사용해 docker로 스프링 프로필을 지정할 수 있다.

 

서비스가 시작되면 해당 컨테이너의 실행 환경 터미널이 생긴다. 이 터미널에서는 실행 환경 로그만 볼 수 있는데, 터미널을 직접 사용하려면 detached 모드로 컨테이너를 시작하면 된다. detached 모드는 -d 옵션을 사용해 컨테이너를 시작하면 된다.

 

컨테이너 로그 보기

컨테이너의 로그를 보려면 도커의 logs 커맨드를 사용한다.

docker logs {컨테이너 이름} -f

-f 옵션: 로그가 출력되는 동안 커맨드를 종료하지 않고 계속해서 로그를 출력해 모니터링할 수 있게 한다.

 

 

컨테이너 제거

도커 애플리케이션에서 직접 제거할 수도 있지만, 커맨드로 컨테이너를 제거할 수 있다.

docker rm -f {컨테이너 이름} 

-f 옵션: 컨테이너가 실행중이더라도 제거한다.

 

 

도커 컴포즈

도커 컴포즈를 사용하면 여러 개의 컨테이너 환경을 함께 관리할 수 있다. 사용하려면 구성 파일(docker-compose.yml)이 필요한데, 도커 컴포즈가 관리할 서비스, 메모리 제한, 환경 변수 등을 지정해준다. 앞에 나온 이미지 빌드 커맨드에 필요한 옵션을 미리 설정해준다고 생각하면 된다.

 

도커 이미지 생성

docker-compose build

구성 파일에 지정된 대로 각 서비스의 이미지들을 한 번에 빌드한다.

 

서비스 환경 시작

docker-compose up -d

 

로그 모니터링

docker-compose logs -f

각 컨테이너의 로그를 모니터링할 수 있다.

 

실행 중인 서비스 상태 확인

docker-compose ps

 

서비스 환경 종료

docker-compose down

 

 

 

(참고)

Hands-On Microservices with Spring Boot and Spring Cloud (2019). Magnus Larsson. Packet Publishing.

docs.docker.com/get-started/overview/

 

Docker overview

 

docs.docker.com

 

'정리 모음' 카테고리의 다른 글

SonarQube 8.9 연동 가이드  (0) 2022.06.24
Clean Code 메모 정리  (0) 2021.03.19
슈도코드(의사코드, pseudocode) 가이드라인  (0) 2020.10.19
[기술면접]자료구조 정리  (0) 2020.10.19
정규표현식 정리  (0) 2020.10.17
Comments