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
cd /etc/systemd/system
- Nginx 서비스 파일 작성 Nginx Docker 컨테이너를 자동으로 실행시키기 위한 서비스 파일을 작성합니다.
1
sudo vi nginx.service
파일 이름은 자유롭게 설정할 수 있습니다. 여기서는 nginx.service로 설정하였습니다.
- 서비스 파일 내용 작성 다음은 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
2
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
이제 EC2 인스턴스가 재부팅될 때마다 Nginx Docker 컨테이너가 자동으로 시작됩니다.
결과 확인
아래는 개인 EC2 인스턴스에서 Docker로 Nginx 컨테이너를 실행하고, 재부팅 후 컨테이너가 자동으로 시작되는지 확인한 캡처 화면입니다.
이 설정을 통해 EC2 인스턴스 재부팅 시 Docker 컨테이너가 자동으로 실행되도록 구성할 수 있습니다.
EC2 재부팅 시 Docker 컨테이너를 자동으로 실행시키는 방법을 알아보았습니다. 추가적으로 궁금한 점이나 개선할 부분이 있다면 언제든지 댓글로 남겨주세요!
This post is licensed under CC BY 4.0 by the author.