redis를 공부하기 위해서 집에서 사용하고 있는 개발용 리눅스(OS : Ubuntu 20.0.4 LTS) 서버에 docker를 이용하여 redis를 설치한 과정을 정리한 포스팅입니다.
참고) 컴퓨터에 docker가 설치되어 있지 않다면 docker를 먼저 설치해야 합니다. 제가 사용하고 있는 개발용 리눅스 서버에는 docker가 이미 설치되어 있습니다.
먼저 docker image를 다운로드 받아야 합니다. 아래와 같이 명령을 입력하면 최신 버전의 redis로 만들어진 docker 이미지가 다운로드 됩니다.
$ docker pull redis
docker 이미지가 정상적으로 다운로드 되었는지 아래와 같이 명령을 입력하여 확인할 수 있습니다.
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 0ec8ab59a35f 10 days ago 117MB
Docker image가 정상적으로 다운로드 되었으면, 아래와 같이 명령을 입력해서 docker container를 생성해야 합니다.
$ sudo docker run -p 6379:6379 --name docker_redis redis
redis에서 사용하는 기본 포트가 6379이기 때문에 리눅스 서버의 6379포트로 들어오는 요청을 Docker container의 6379포트로 포워딩할 수 있도록 -p옵션을 사용하여 포트 포워딩을 지정했고, --name옵션으로 docker_redis라고 container이름도 지정했습니다.
docker run 명령어를 사용하게 되면 docker container가 생성되면서 실행이 됩니다. 터미널에서 CTRL+C
키를 입력하여 실행중인 docker container를 종료시킵니다.
아래와 같이 docker ps -a 명령을 입력하여 docker container의 상태를 확인할 수 있습니다.
위에서 docker container를 종료시켰기 때문에 현재 상태는 Exited로 표기됩니다.
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc76e4b4bf6a redis "docker-entrypoint.s…" 6 minutes ago Exited (0) 6 minutes ago docker_redis
docker container는 docker start [container_name]으로 다시 실행시킬 수 있습니다. 반대로 종료를 원하는 경우에는 docker stop [container_name] 명령을 사용하면 됩니다.
아래와 같이 입력하여 docker_redis container를 실행합니다.
sudo docker start docker_redis
docker_redis
그리고 docker container의 상태를 다시 확인해보면 이번에는 docker container가 실행중인 것을 알 수 있습니다.
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc76e4b4bf6a redis "docker-entrypoint.s…" 10 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp docker_redis
이제 docker container 내부에 접속해서 redis-cli를 실행해볼 수 있습니다.
$ sudo docker exec -it docker_redis /bin/bash
root@bc76e4b4bf6a:/data# redis-cli
참고) redis docker container의 실행을 서비스로 만들어서 등록해놓으면, 매번 리눅스 서버를 재시작할 때마다 docker container가 자동으로 실행되기 때문에 편리합니다.
그래서 /etc/systemd/system/redis.service
파일을 생성하고, redis docker container의 실행을 위한 서비스를 아래와 같이 정의했습니다.
[Unit]
Description=Service to run docker container for redis
[Service]
Type=simple
ExecStart=sudo docker start docker_redis
Restart=on-failure
[Install]
WantedBy=multi-user.target
그리고 나서 다음의 명령을 순서대로 실행하면 redis docker container를 위한 서비스를 등록할 수 있습니다.
systemctl daemon-reload
systemctl enable redis.service
systemctl start redis.service