개발자의 오르막

[Docker - Redis #01] docker-compose 로 Redis 환경 구축해보기 본문

Docker

[Docker - Redis #01] docker-compose 로 Redis 환경 구축해보기

계단 2022. 9. 14. 11:31

Target


  • Docker 명령어로 Redis 를 설치 및 구동해본다.
  • Docker-Compose 로 Redis 환경을 구축해본다.
  • Docker 컨테이너에 접속해 Redis-Client 를 실행시켜본다.
  • Docker-Compose 로 Redis-Sentinel 환경을 구축해본다. ( 2편예정 )

 

 

1. Docker 로 Redis 설치 및 구동하기


도커로 특정 프로그램을 설치한다고 할 때 다음과 같은 절차를 공통적으로 진행하게 됩니다.

  1. 원격 레파지토리에 있는 Docker Image 를 다운받기
  2. Docker 실행 명령어에 적용할 옵션을 붙여서 실행하기

일종의 패키지, 또는 라이브러리라 볼 수 있으며, 저희는 이미 구성된 쉘 스크립트 파일을 Docker run 명령어를 통해 자동으로 실행되는 효과를 누릴 수 있는 것입니다.

이는 반대로, 우리가 애플리케이션의 도커 이미지를 만들고, 원격 레파지토리에 저장하여 URL 를 등록하면, 다른 사용자가 우리처럼 도커 명령어 만으로 사용할 수 있다는 것을 의미합니다.

 

 

 

Docker Image 다운로드


docker pull redis:alpine

첫번째 절차와 같이 먼저 Docker Image 를 Pull 커멘드를 통해 다운로드 받습니다. 이때 : 뒤에 붙는 alpine 은 태그를 의미하며 도커에서는 특정 버전을 분류할 때 많이 사용합니다.

여기서 alpine 은 ubuntu 보다 훨씬 경량화된 운영체제로 최소한의 용령에서 도커 이미지가 동작할 수 있게 해줍니다.

도커 이미지가 잘 받아졌는지는 아래의 명령어를 통해 확인할 수 있습니다.

docker images

 

 

 

 

Docker 실행


docker run --name redis_boot -d -p 6379:6379 redis:alpine

그럼 두번째 절차인 도커 이미지를 실행해보겠습니다.

먼저 실행하기 앞서 위의 옵션들을 간략하게 설명할게요.

  • --name : container 명을 지정합니다.
  • -d , --detach : 백그라운드로 실행합니다.
  • -p : host 의 port 와 container port 설정을 해줍니다.

위의 명령어를 실행시키면 백그라운드 (데몬) 으로 실행했기 때문에 잘 동작했는지 모를 수도 있습니다.

# 현재 동작중인 도커 컨테이너 표시
docker ps

# 모든 도커 컨테이너 표시
docker ps -a

위의 명령어를 실행시키면 아래 이미지처럼 도커의 현황을 파악할 수 있습니다.

 

 

실습을 맞췄다면 도커를 중지 및 삭제해주세요.

# 컨테이너 중지
docker stop redis_boot

# 컨테이너 삭제
docker rm redis_boot

 

 

2. Docker-Compose 로 Redis 환경 구성하기


그러면 docker-compose 는 어떤 것일까요?

자세한 얘기는 Docker 를 집중적으로 다루는 포스팅에서 안내할 예정입니다만, 쉽게 말해 여러 도커 컨테이너를 한번에 실행시켜주는 스크립트 파일이라고도 할 수 있겠네요.

docker-compose 에서는 yml 이라는 파일 양식으로 어떤 이미지와 어떻게 실행시킬지에 대한 옵션을 미리 적어주면, 우리는 매번 Docker run 에 많은 옵션을 붙여서 일일이 커멘드를 치지 않아도 괜찮습니다!

 

 

 

Yml 파일 작성


그럼 우선 docker-compose.yml 을 작성해볼까요?

우선 위치는 컴퓨터의 어떤 곳이든 상관 없습니다. 저는 홈 디렉터리에서 dev-tool 이라는 폴더를 생성해서 그 위치에다가 yml 을 만들었어요.

  • redis_server.yml
version: '3.7'
services:
    redis:
      image: redis:alpine
      command: redis-server --port 6379
      container_name: redis_boot
      hostname: redis_boot
      labels:
        - "name=redis"
        - "mode=standalone"
      ports:
        - 6379:6379

우선 위의 yml 내용을 보시면 저희가 아까 실행했던 Docker run 명령어의 옵션들이 녹아 있는 것을 볼 수 있습니다.

  • image : docker pull redis:alpine
  • ports : -p 6379:6379
  • labels 의 name : --name redis_boot

그리고 docker 를 실행했을 때처럼 docker-compose.yml 을 실행시키는 명령어입니다.

docker-compose -f ./redis_server.yml up -d
  • docker-compose 기본 명령어는 docker-compose up 입니다.
    • -d 옵션은 백그라운드를 의미합니다.
    • -f 는 yml 파일을 지정해주는 것을 의미합니다.

 

Docker 로 띄웠을 때처럼 동일하게 뜨는 것을 확인 할 수 있습니다.

 

 

 

 

3. Docker 컨테이너에 접속하여 Redis-Cli 사용해보기


docker ps , docker ps -a 는 단순하게 컨테이너의 동작 상태만 알 수 있습니다. 그러면 실제로 Redis 가 동작하는지 redis-cli 를 통해 알아보겠습니다.

docker exec -it redis_boot redis-cli

exec 커멘드를 사용해 docker container 내부에 명령어를 실행해볼 수 있습니다.

  • -it : 명령어 한번 실행이 아닌, 계속해서 커멘드를 실행시킬 수 있도록 해주는 옵션입니다.
  • redis-cli : 컨테이너 내부에서 실행시킬 명령어를 마지막 위치에 붙여줍니다.
    • ubuntu 인 경우 : /bin/bash
    • alpine 인 경우 : /bin/sh

위의 명령어를 실행시키면 Redis-cli 로 접속하게 되어 아래와 같이 Redis를 실행할 수 있게됩니다.

 

 

 

Docker-Compose 종료


Docker Compose 를 종료시키기 위해서는 아래의 명령어를 실행시킬 수 있습니다.

docker-compose -f ./redis_server.yml down

 

 

 

Reference


'Docker' 카테고리의 다른 글

awk 명령어로 Docker 스크립트 파일 생성하기  (0) 2022.12.31
Comments