Post

Ec2 재부팅시 docker 컨테이너 시작하기

Ec2 재부팅시 docker 컨테이너 시작하기

EC2 재부팅 시 Docker 컨테이너 자동 실행 설정

회사 정책상 근무시간 외에는 특정 서버를 제외하고 모든 서버는 중지되며, 근무시간(09:00~20:00)에는 다시 재부팅되어야 합니다. 현재 우리의 서버는 EC2 인스턴스에서 Docker를 통해 Spring Boot 애플리케이션과 Nginx 컨테이너가 실행되고 있습니다. 따라서 EC2가 재부팅될 때 Docker 컨테이너들이 자동으로 시작되도록 설정이 필요합니다.

Docker Compose의 restart 옵션을 사용하면 EC2가 재부팅될 때 Docker 컨테이너들이 자동으로 다시 시작됩니다. 그러나 이번에는 restart 옵션을 사용하지 않고, systemd 서비스를 통해 EC2 재부팅 시 Nginx 컨테이너를 자동으로 시작하도록 설정하는 법을 알아보겠습니다.

Nginx Docker 컨테이너를 시스템 서비스로 등록하기

  1. 시스템 서비스 디렉토리로 이동 먼저, 서비스 파일을 작성하기 위해 시스템 서비스 파일이 위치한 디렉토리로 이동합니다
1
cd /etc/systemd/system
  1. Nginx 서비스 파일 작성 Nginx Docker 컨테이너를 자동으로 실행시키기 위한 서비스 파일을 작성합니다.
1
sudo vi nginx.service 

파일 이름은 자유롭게 설정할 수 있습니다. 여기서는 nginx.service로 설정하였습니다.

  1. 서비스 파일 내용 작성 다음은 nginx.service 파일의 내용입니다
1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Nginx Container
After=docker.service
Requires=docker.service

[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/docker start nginx
ExecStop=/usr/bin/docker stop nginx

[Install]
WantedBy=default.target
  • [Unit]
    • Description: 서비스에 대한 설명입니다.
    • After: 이 서비스가 실행되기 전에 docker.service가 실행되어야 함을 명시합니다.
    • Requires: 이 서비스가 docker.service에 의존함을 나타냅니다.
  • [Service]
    • RemainAfterExit=yes: 서비스가 시작된 후에도 활성화된 상태로 유지합니다.
    • ExecStart: Nginx Docker 컨테이너를 시작하는 명령어입니다.
    • ExecStop: Nginx Docker 컨테이너를 중지하는 명령어입니다.
  • [Install]
    • WantedBy: 시스템이 멀티유저 모드로 부팅될 때 서비스가 실행되도록 합니다.
  1. 서비스 활성화 및 시작 이제 서비스를 활성화하고 시작합니다.
1
2
sudo systemctl enable nginx.service
sudo systemctl start nginx.service

이제 EC2 인스턴스가 재부팅될 때마다 Nginx Docker 컨테이너가 자동으로 시작됩니다.

결과 확인

아래는 개인 EC2 인스턴스에서 Docker로 Nginx 컨테이너를 실행하고, 재부팅 후 컨테이너가 자동으로 시작되는지 확인한 캡처 화면입니다.

  • Nginx 서비스 등록 확인 Nginx service

  • EC2 인스턴스 재부팅 EC2 인스턴스 재부팅

  • Docker 재부팅 후 컨테이너 자동 실행 docker 재부팅 모습

이 설정을 통해 EC2 인스턴스 재부팅 시 Docker 컨테이너가 자동으로 실행되도록 구성할 수 있습니다.


EC2 재부팅 시 Docker 컨테이너를 자동으로 실행시키는 방법을 알아보았습니다. 추가적으로 궁금한 점이나 개선할 부분이 있다면 언제든지 댓글로 남겨주세요!

This post is licensed under CC BY 4.0 by the author.