서버 운영 관리 [ Tip ]

Docker 컨테이너 자동시작


Docker 컨테이너 자동 재시작

'systemctl' 명령을 사용하여 부팅 시 자동으로 실행되도록 도커 서비스를 설정할 수 있습니다.
이 명령은 '/etc/systemd/system' 디렉토리의 서비스 파일에서 적절한 대상에 대한 심볼릭 링크를 생성하여 시스템이 부팅될 때 자동으로 시작되도록 합니다. 

또한, 서비스 파일을 추가로 생성해 도커 컨테이너를 자동으로 다시 시작하게 할 수있습니다.

컨테이너에 대한 'systemd' 서비스 파일을 만드려면
'/etc/systemd/system' 디렉토리 내에 확장자가 '.service'인 새 파일을 생성하면 됩니다.

서비스 파일 생성 및 테스트는 다음 예제 내용을 참조 바랍니다. 


1. 작업 전 준비

자동실행 테스트를 진행하기 위해 실행되고 있는 모든 컨테이너를 중지합니다. 

# docker ps → DB 컨테이너가 실행되고 있는 상태
# docker stop DB → 실행되고 있는 컨테이너 중지
# docker ps → 현재 실행되고 있는 컨테이너 없음

 

2. service 파일생성
systemd를 이용하여 서비스 파일을 생성한 후 해당 서비스를 부팅시 실행될 수 있도록 활성화합니다.

# cd /etc/systemd/system


# vi [설정한 서비스].service
[Unit]
Wants=docker.service
After=docker.service
 
[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/docker start [실행할 docker container 이름]
ExecStop=/usr/bin/docker stop [실행할 docker container 이름]
 
[Install]
WantedBy=multi-user.target


# systemctl start [설정한 서비스] → 서비스를 시작

# systemctl enable [설정한 서비스] → 부팅시 실행할 수 있도록 해당 서비스 활성화


/etc/systemd/system/multi-user.target.wants/docker_db.service에서/ /etc/systemd/system/docker_db.service로 심볼릭 링크가 생성되었습니다.


# systemctl list-unit-files |grep docker → docker_db.service가 자동실행 되도록 설정

 

3.  자동실행 테스트
 

재부팅 후 도커 서버에 접속하였을 때 자동으로 DB 서비스가 올라와있는것을 확인할 수 있습니다.