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

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

  1. 서비스 파일 내용 작성 다음은 nginx.service 파일의 내용입니다
[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. 서비스 활성화 및 시작 이제 서비스를 활성화하고 시작합니다.
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 컨테이너를 자동으로 실행시키는 방법을 알아보았습니다. 추가적으로 궁금한 점이나 개선할 부분이 있다면 언제든지 댓글로 남겨주세요!

results matching ""

    No results matching ""