[Tip] Docker Redis 시작하기
설치
sudo apt-get install docker.io
redis 이미지 다운
docker pull redis
docker로 실행
docker run redis
이러면 실행되긴 한다.
하지만 더 자세한 설정을 해 줄 필요가 있다.
--rm : 실행 정지되면 자동으로 컨테이너를 지워 줌
-d : 백그라운드에서 데몬으로 실행됨
-p [외부포트 : 내부포트] : docker 컨테이너의 외부/내부포트 지정 => ex) -p 8080:6379
-v [외부 디렉토리 : 내부 디렉토리] : 실제 OS 폴더와 해당 컨테이너 내부의 폴더를 연결시켜 줌. 보통 컨테이너가 종료되면 해당 컨테이너에 저장되었던 데이터들이 모두 날아가는데, 이를 방지하기 위함이다.
Dockerfile (공식 문서, 명령어 : 참고 블로그)
- 이미지에 설정파일 같은 걸 저장해 둘 수 있고, 해당 이미지가 컨테이너로 등록되어 실행될 때 수행할 명령어같은 것들을 지정할 수 있다.
- Dockerfile이라는 이름으로 만들어야 한다.
- Copy명령어같은 것들은 현재 디렉토리 내부만 참조가 가능하다
1. 폴더 생성 및 redis.conf파일 생성
2. 해당 폴더에 Dockerfile 만들고 다음과 같이 작성
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
VOLUME /data
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
- 빌드하면 redis.conf파일을 이미지에 복사
- 컨테이너 내부의 /data폴더와 외부 폴더 연결시켜 줌. 외부 폴더는 docker 실행 시 파라미터로 설정 가능
- 컨테이너가 실행되면 내부적으로 redis-server /usr/local/etc/redis/redis.conf 명령 실행하도록 함.
3. Dockerfile 있는 폴더에 data폴더 생성
- 컨테이너 내부의 data폴더와 연결해서 데이터를 현재 OS에 저장하기 위함
4. 빌드
- docker build [options] path | url
docker build -t bin-redis .
*잘 안보이겠지만 저기 끝에 . 중요하다. 현재 경로.
이렇게 bin-redis라는 이미지를 만들었다.
이미지에는 Dockerfile로 설정했던 정보들이 저장되어 있다.
이제 실행할 때 -v 옵션으로 저장소를 연결해 주면 된다.
docker run --rm -d -p 6379:6379 --name binredis -v /home/hsb/mydocker/redis/data:/data bin-redis
이제 redis-cli를 이용해 접속해서 테스트해 보자
잘 접속된다.
외부 스토리지를 연결했기 때문에 docker를 중지하고 다시 실행해도 기존 데이터가 사라지지 않는다.