Docker 기본 사용법 알아보기
카테고리: Docker
업데이트:
Docker란?
Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징해 환경에 구애받지 않고 애플리케이션을 빠르고 안정적이게 배포 및 확장할 수 있는 기능을 제공하는 플랫폼입니다.
이때, 컨테이너에는 라이브러리부터, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는데 필요한 모든 것이 포함되어있습니다.
Docker와 Virtual Machine의 차이점
Virtual Machine의 경우 하이퍼바이저에서 Guest OS를 실행하고 그 위에서 Application을 구동시키는 방식입니다.
하지만 Docker의 경우 Guest OS없이 Docker Engine이 리소스를 각 컨테이너에 분배하고 동작하기때문에 가볍습니다.
즉, Docker는 Guest OS가 없기 때문에 VirtualMachine에 비해 훨씬 가볍습니다.

Docker의 기본 사용법
Docker 컨테이너 실행하기
도커 이미지를 실행하는 방법은 다음과 같이 docker run 명령어를 이용해 실행이 가능합니다.
docker run --name 컨테이너이름 -d -p 8080:8080 -v ~/Desktop/myProject:/usr/app ubuntu
이때, 옵션으로 다음과 같이 이용이 가능합니다.
- –name : 컨테이너 이름
- -d : 백그라운드 모드 실행
- -p 호스트포트:컨테이너포트 : 컨테이너포트를 호스트포트에 연결
- -v 로컬경로:컨테이너경로 : 컨테이너경로와 로컬경로 파일을 연동
Docker 컨테이너 종료하기
docker rm -f Container_ID
Docker 이미지 빌드하기
이미지를 빌드하기 위해서는 먼저 Dockerfile을 다음과 같이 만들어줘야 합니다.
FROM openjdk:latest
EXPOSE 8080
ADD ./build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
순서대로 해석하자면 다음과 같습니다.
- openjdk 최신 버전 기반
- 8080포트를 공개
- ’./build/libs/*.jar’파일을 ‘app.jar’이름으로 이미지에 추가
- 컨테이너 시작시 java -jar /app.jar 명령어 실행
기본적인 키워드
이외에도 매우 다양한 키워드를 이용해 이미지를 어떻게 만들지 정할 수 있습니다.
| 키워드 | 설명 | 예시 |
|---|---|---|
| FROM | base 이미지를 지정합니다. | FROM openjdk:latest |
| WORKDIR | 작업 디렉터리를 전환합니다. | WORKDIR /usr/app |
| RUN | 주어진 명령어를 실행합니다. | RUN apk add curl |
| ENTRYPOINT | 컨테이너를 시작할 때 실행되어야 하는 커맨드를 지정합니다. | ENTRYPOINT [“java”, “-jar”, “/app.jar”] |
| CMD | 이지지 실행 시 디폴트 커맨드 또는 파라미터를 설정합니다. | CMD echo “컨테이너 실행시 echo 명령이 없으면 해당 문장 출력” |
| EXPOSE | 컨테이너가 공개할 포트 및 프로토콜을 설정합니다. | EXPOSE 8080 |
| COPY | 이미지의 파일 시스템으로 파일 또는 디렉터리를 복사합니다. | COPY ./build/libs/*.jar app.jar |
| ADD | 이미지의 파일 시스템으로 파일 또는 디렉터리를 복사합니다. | ADD ./build/libs/*.jar app.jar |
| ENV | 환경변수를 설정합니다. | ENV key value |
| ARG | 빌드 시 넘어올 수 있는 인자를 설정합니다. | ARG myArg ARG myArg2=defaultValue |
이후 다음 명령어를 이용해 이미지를 빌드하면 됩니다.
docker build -t 이미지이름 .
Docker Compose로 다중 컨테이너 빌드 및 실행하기
마이크로서비스와 같은 경우 각각의 마이크로서비스를 도커로 실행합니다.
그러면 컨테이너 실행 명령어를 각각의 마이크로서비스별로 실행해줘야하는 번거로움이 있습니다.
이런 문제점을 해결 가능하도록 제공되는 기능이 바로 Docker Compose입니다.
다음과 같이 사용할 컨테이너의 빌드 옵션을 설정합니다.
docker-compose.yml 작성하기
version: '2.1'
services:
이름:
build: microservices/myService # 도커 이미지 빌드에 사용할 Dockerfile 위치
mem_limit: 350m # (메모리를 350m로 제한)
environment:
- Key=value
이름2:
build: microservices/myService2
mem_limit: 350m
environment:
- Key=value
빌드하기
docker-compose build
실행하기
docker-compose up -d
종료하기
docker-compose down
댓글남기기