0%

docker, docker-compose 설치

도커란 무엇인가?

Docker는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.

컨테이너란?

우리가 일반적으로 생각하는 컨테이너와 유사합니다. 컨테이너는 개발자가 앱을 환경에서 분리하여 “내 컴퓨터에서 작동” 하기 위한 표준화된 단위입니다.

도커의 장점

  1. 도커는 컨테이너의 표준입니다. 따라서 어느 환경에도 적용 가능합니다.

  2. 컨테이너는 OS 시스템의 커널만 사용하기 때문에 앱마다 OS를 설치할 필요가 없습니다.

  3. 컨테이너를 격리 하기 때문에 안전합니다.

    도커 이미지2 도커 이미지3

도커 설치 (Ubuntu 22.04)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#저장소 업데이트
sudo apt-get update

# 필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 도커 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg

# 도커 저장소 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 저장소 업데이트
sudo apt-get update

# 도커 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 도커 권한 변경
sudo chmod 666 /var/run/docker.sock

# 도커 버전 확인
docker version

아래와 같이 나오면 설치가 완료된 것입니다.

1
2
3
4
5
6
7
8
9
ubuntu@server1:~$ docker version
Client: Docker Engine - Community
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:31:44 2023
OS/Arch: linux/amd64
Context: default

docker-compose 설치

도커를 사용하다보면 여러 컨테이너를 한번에 실행해야 할 때가 있습니다. 하나하나 실행하는 것은 번거롭기 때문에 docker-compose를 사용합니다.

docker-compse release에서 최신 버전을 확인합니다.

1
2
3
4
5
6
7
8
9
10
11
# 다운로드
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

# 심볼릭 링크 생성
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 버전 확인
docker-compose --version

yaml 파일 작성

docker-compose를 사용하기 위해서는 yaml 파일을 작성해야 합니다. 아래는 간단한 yaml 파일입니다.

1
2
3
4
5
6
7
8
9
10
11
version: '3'

services:
web:
image: nginx:latest
ports:
- "8080:80"
environment:
- NGINX_PORT=80
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
  • version: docker-compose 버전
  • services: 실행할 컨테이너 목록
  • web: 컨테이너 이름(원하는 이름으로 변경 가능)
  • image: 이미지명:태그
  • ports: 호스트port:컨테이너port
  • environment: 환경변수
  • volumes: 호스트 디렉토리:컨테이너 디렉토리

docker-compose 명령어

1
2
3
4
5
6
7
8
9
10
11
12
# 빌드
docker-compose build
# 실행
docker-compose up
# 백그라운드 실행
docker-compose up -d
# 중지
docker-compose down
# 로그 확인
docker-compose logs
# 로그 확인(실시간)
docker-compose logs -f

위의 명령어를 사용하면 yaml 파일에 작성한 컨테이너를 실행할 수 있습니다. 특정 컨테이너만 실행하고 싶다면 docker-compose up 컨테이너이름으로 실행하면 됩니다.

마무리

컨테이너를 사용하면 앱을 빠르게 배포할 수 있고, 환경에 상관없이 동일한 환경에서 실행할 수 있습니다. 이미지를 배포하는 방법은 여기를 참고하세요.