Docker Redis 사용하기

|

Docker를 이용하여 간단하게 redis 설치 및 사용하는 방법을 정리해봤습니다.

설치

Docker가 설치 된 상태에서 아래 커맨드를 이용하여 설치합니다.

$ docker pull redis

시작하기

$ docker run --name some-redis -d -p 6379:6379 redis

Docker를 실행하여 Redis서버를 올리고 기본 포트인 6379로 실행됩니다.
-d옵션은 백그라운드에서 실행하겠다는 의미이며
-p옵션은 외부에서 해당 포트로 접속할 수 있게 열어둔다는 의미입니다.

해당 Redis서버의 데이터를 외부에서 관리하고 싶을 경우에는 아래와 같이 사용합니다.

## 외부 폴더에 데이터 저장소를 두고 싶을 경우
$ docker run --name some-redis -d -v /your/dir:/data redis redis-server --appendonly yes

## 다른 컨테이너에 저장소를 두고 싶은 경우
$ docker run --name some-redis -d --volumes-from some-volume-container redis redis-server --appendonly yes

appendonly yes 옵션은 AOF방식으로 데이터를 저장(참고:Redis Persistence Introduction)하겠다는 의미입니다.
데이터는 기본적으로 /data하위에 저장되며 외부에서 해당 폴더를 공유함으로써 해당 컨테이너를 지우고 새로 만들어도 해당 volume을 참고하게 하면 동일한 데이터를 유지 할 수 있습니다.

OS X의 경우 사전에 Docker에서 공유폴더로 지정되지 않은 경우 아래와 같은 오류를 만날 수 있습니다.

docker: Error response from daemon: Mounts denied:
The path /Users/jistol/data
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences… -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

위와 같은 오류 발생시 메시지에 나온데로 Docker -> Preferences -> File Sharing 설정에서 공유할 폴더를 추가해 주면 됩니다.
file sharing

외부에서 접근하기

외부에서 Redis 컨테이너를 접근하는 방법은 3가지 입니다.

1. 외부 서버에서 접근하기

위에 명시한 것과 같이 -p 옵션을 통해 port를 뚫어 직접 접근 할 수 있습니다.

$ docker run --name some-redis -d -p 6379:6379 redis

2. 다른 컨테이너에서 접근하기

--link-network옵션을 통해 접근 가능합니다. (참고:Docker container networking)

$ docker run --name some-app --link some-redis:redis -d application-that-uses-redis

3. redis-cli로 접근하기

아래와 같은 명령으로 접근할 수 있습니다.

$ docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379

Redis 컨테이너 기동 방식에 따라 --link--network, 혹은 port를 외부로 열었다면 두 옵션 없이 사용 가능합니다.
--rm 옵션은 컨테이너 종료시 자동으로 해당 컨테이너를 삭제해줍니다.

참고

library/redis - Docker Hub
Redis Persistence Introduction
Docker container networking

Comments