1. Docker 설치
|
1 2 3 4 5 6 |
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin |
2. Redis 컨테이너 실행
-d 같은 docker 옵션은 이미지 이름 앞에 와야 한다. 이미지 뒤에 쓰면 컨테이너 안의 명령 인자로 넘어간다.
|
1 2 3 4 |
sudo docker run -d --name redis-stack \ -p 127.0.0.1:6379:6379 \ --restart unless-stopped \ redis/redis-stack-server:latest |
--restart unless-stopped만 있어도 Docker 서비스가 켜질 때 컨테이너가 같이 올라온다. 대부분은 이걸로 충분하다.-p 127.0.0.1:6379:6379처럼 로컬에만 열어 둔다. 6379 를 외부에 열어 두면 Redis 를 노리는 공격 대상이 된다. 외부에서 써야 하면 비밀번호(-e REDIS_ARGS="--requirepass <password>")와 방화벽을 같이 설정한다.
3. systemd 서비스로 관리하고 싶을 때
다른 서비스와 시작 순서를 맞춰야 할 때는 systemd 유닛으로 만든다. 이때는 위의 --restart 옵션을 빼고 컨테이너를 만든다.
|
1 |
sudo vi /etc/systemd/system/docker-redis.service |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
[Unit] Description=Redis Stack container After=docker.service Requires=docker.service [Service] ExecStart=/usr/bin/docker start -a redis-stack ExecStop=/usr/bin/docker stop redis-stack Restart=on-failure [Install] WantedBy=multi-user.target |
docker start 에 -a 를 붙여야 컨테이너가 도는 동안 서비스도 살아 있는 것으로 보인다. 빼면 시작하자마자 끝난 것으로 처리된다. 서비스는 root 로 돌기 때문에 sudo 도 필요 없다.
|
1 2 3 |
sudo systemctl daemon-reload sudo systemctl enable --now docker-redis.service systemctl status docker-redis.service |

Leave a Reply