본문 바로가기
프로그래밍/Redis

docker redis-server 스냅샷을 OS경로로 저장

by 남생 namsaeng 2022. 5. 30.
반응형

docker를 이용하여 redis-server를 실행할 때, 스냅샷을 docker 컨테이너 안이 아닌 일반 os경로에 저장하는 방법을 소개한다.

 

 

 

1. DB 저장공간으로 사용할 volume 선택

[namsaenga@localhost localhost ~]$ docker volume create testvolume
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
testvolume



2. volume 세부사항 확인

[namsaenga@localhost ~]$ docker volume inspect testvolume
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
[
    {
        "Name": "testvolume",
        "Driver": "local",
        "Mountpoint": "/home/namsaenga/.local/share/containers/storage/volumes/testvolume/_data",
        "CreatedAt": "2022-04-11T13:53:43.966644906+09:00",
        "Labels": {},
        "Scope": "local",
        "Options": {}
    }
]



2. 디렉터리와 volume 연결

[namsaenga@localhost localhost ~]$ ln -s /home/namsaenga/.local/share/containers/storage/volumes/testvolume/_data testvolume




3. Docker 컨테이너를 위한 파일 구성하기

  • redisdb 디렉터리를 생성한 후에 하위 경로에 아래의 파일을 작성한다.
  • /usr/local/bin/redis-server 파일 및 redis.conf 파일을 redisdb 디렉터리 하위 경로로 복사한다.


1) Dockerfile 작성

FROM registry.access.redhat.com/ubi8/ubi:8.1
ADD . .
CMD ["./init_redis.sh"]



2) init_redis.sh 작성 

#!/bin/sh
(./redis-server ./redis.conf --port 16379;)

 

 

3) redis.conf 구성

  • 스냅샷을 저장할 디렉터리 설정 및 장치와 통신할 IP주소를 설정한다.
dbfilename dump.rdb
dir /home/namsaenga

...

#bind 127.0.0.1 -::1
bind 192.168.14.24 -::1

 

 

4. Docker 컨테이너 실행하기

 


1) Docker 이미지 빌드

[namsaenga@localhost redisdb]$ docker build .
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
STEP 1/3: FROM registry.access.redhat.com/ubi8/ubi:8.1
STEP 2/3: ADD . .
--> 641f45776d8
STEP 3/3: CMD ["./init_redis.sh"]
COMMIT
--> 679a0e65461
679a0e654616eb4bb2a97d2c23780364da47524c8fefcbe2073c9e5d9ce9bddd

 


2) Docker 이미지 태그 설정

[namsaenga@localhost redisdb]$ docker tag 679a0e65461 redisdb
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.



 

3) Docker 컨테이너 실행

[namsaenga@localhost redisdb]$ docker run -d --net=host --name redisdb_container -v testvolume:/home/namsaenga/ redisdb
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
ab1baeed1c63e1572fdeb6206f05b11575c166da33d0ac7d37ff34139c3069fd

 



4) 모든 Docker 컨테이너 상태 및 목록 확인

[namsaenga@localhost redisdb]$ docker ps -a
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID  IMAGE                       COMMAND        CREATED        STATUS                      PORTS       NAMES
1e410e4612d2  localhost/receiver1:latest  ./init_receiver1.sh  15 minutes ago  Up 15 minutes ago              receiver1_container
ab1baeed1c63  localhost/redisdb:latest    ./init_redis.sh  12 minutes ago  Up 12 minutes ago                redisdb_container
반응형

댓글