[redis] docker로 redis 띄우기

Coastby·2023년 3월 10일
5

Daengnyang 프로젝트

목록 보기
11/12
post-custom-banner

docker 설치 (참고)

  1. root 권한 접근

    $ sudo su -
  2. github에서 스크립트 받아와서 실행하기

    $ git clone https://github.com/Kyeongrok/docker_minikube_kubectl_install.git
    $ cd docker_minikube_kubectl_install
    $ sh docker_install.sh
  3. 설치되었는지 확인

    제대로 설치되었다면 docker를 입력하면 도커 명령어들이 나온다.

Docker 그룹 생성 (참고)

Linux는 다중 사용자 시스템으로 여러 사용자가 접속해서 사용한다. 또한 서버용 OS로 많이 사용되기 때문에 권한에 대한 관리가 매우 엄격하고 중요하다.

하지만 리눅스의 각종 기능을 사용하려면 root 권한 (superuser)의 권한이 필요한 경우가 많다.

docker를 사용할 때 root 권한으로만 사용할 수 있도록 default로 설정되어 있다. 따라서 docker 명령어를 입력할 때도 root 권한이 필요해서 명령어 앞에 sudo를 붙여야 한다.

지속적으로 관리자 권한이 필요한 경우에는 매번 sudo를 붙이기보다 sudo su - 명령어를 통해 계정을 반영구적으로 빌릴 수 있다. 그러나 이는 다른 계정도 완전히 전환되고, 환경설정도 전환되므로 이렇게 작업하는 것은 권장되지 않는다고 한다.

따라서 docker 그룹에 ubuntu 계정을 추가하여 root 권한이 아니더라도 작업을 할 수 있도록 한다.

  1. 도커 그룹 생성

    이미 그룹이 생성되어 있는 경우가 대부분이라 생략 가능

    $ sudo groupadd docker
  1. 도커 그룹에 계정 추가

    $ sudo usermod -aG docker [계정명]
  1. 도커 재시작

    $ sudo service docker restart

일단 도커로 띄우기

  1. redis 이미지 다운

    $ docker pull redis
  2. 이미지 파일 확인

    $ docker images
  3. 도커 컨테이너 실행

    이전에 redis 올리자마자 해킹 당한 적이 있어서 환경변수로 비밀번호를 같이 줬다.

    $ docker run -p 6379:6379 --name (redis 컨테이너 이름) -d redis:latest --requirepass "(비밀번호)"
  4. redis-cli로 접근

    $ docker exec -i -t (redis 컨테이너 이름) redis-cli -a "비밀번호"

    cli에서 ping을 입력하면 PONG으로 응답해야 한다.

docker volume 설정 (참고)

Redis가 in-memory data-store 솔루션이지만, 안정적인 운영을 위해 메모리에 있는 데이터를 디스크에 쓰는 2가지 옵션을 제공한다.

1) RDB (Redis DataBase) : 지정된 시간 간격으로 스냅샷을 파일로 저장
2) AOF (Append Only File) : 모든 작업을 기록, 서버가 시작할 때 기록을 읽어서 데이터 재구성

어떤 옵션을 사용하더라도 데이터 저장이 되어있는 곳이 필요하고 수월한 백업ㅇ르 위해 docker volume 공간을 따로 구성한다.

# 리스트 확인
$ docker volume ls

# 생성
$ docker volume create [name]

# 상세 조회
$ docker volume inspect [name]

# 리스트 확인
$ docker volume ls

Redis config

Redis의 환경 설정을 위해 필요한 config 파일을 작성한다. 또한 작성한 config 파일은 host에서 관리할 수 있도록 한다.


# 어떤 네트위크 인터페이스로부터 연결할 수 있도록 할 것인지 관리 (여기에서는 Anywhere)
bind 0.0.0.0

# 사용 포트 관리
port 6379

# Master 노드의 기본 사용자(default user)의 비밀번호 설정
requirepass [사용하고자 하는 비밀번호]

# Redis 에서 사용할 수 있는 최대 메모리 용량. 지정하지 않으면 시스템 전체 용량
maxmemory 1g

# maxmemory 에 설정된 용량을 초과했을때 삭제할 데이터 선정 방식
# - noeviction : 쓰기 동작에 대해 error 반환 (Default)
# - volatile-lru : expire 가 설정된 key 들중에서 LRU algorithm 에 의해서 선택된 key 제거
# - allkeys-lru : 모든 key 들 중 LRU algorithm에 의해서 선택된 key 제거
# - volatile-random : expire 가 설정된 key 들 중 임의의 key 제거
# - allkeys-random : 모든 key 들 중 임의의 key 제거
# - volatile-ttl : expire time(TTL)이 가장 적게 남은 key 제거 (minor TTL)
maxmemory-policy volatile-ttl

# DB 데이터를 주기적으로 파일로 백업하기 위한 설정입니다.
# Redis 가 재시작되면 이 백업을 통해 DB 를 복구합니다.

save 900 1      # 15분 안에 최소 1개 이상의 key 가 변경 되었을 때
save 300 10     # 5분 안에 최소 10개 이상의 key 가 변경 되었을 때
save 60 10000   # 60초 안에 최소 10000 개 이상의 key 가 변경 되었을 때

redis 실행


$ docker run \
-d \
--restart=always \
--name=redis \
-p 6379:6379 \
-e TZ=Asia/Seoul \
-v /srv/workspace/redis/redis.conf:/etc/redis/redis.conf \
-v redis_data:/data \
redis:7.0.2 redis-server /etc/redis/redis.conf
profile
훈이야 화이팅
post-custom-banner

0개의 댓글