일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 롬복주의점
- strict stubbing
- python-socketio
- Thread Library
- 쓰레드 라이브러리
- ReflectUtils
- FunctionalInterface
- rainbow table
- Thread Multiplexing
- 문자열 리터럴
- 프로세스
- task_struct
- @Header
- SystemCall
- 운영체제
- hiberbate
- Spring
- django-crontab
- 문자열 불변성
- 함수형 인터페이스
- AOP
- none이미지
- spring-data-jpa
- Process
- OS
- sql-mappler
- java.util.function
- 도커
- functional interface
- custom annotation
- Today
- Total
JH's Develog
[Docker] 리눅스 부팅 시 도커 컨테이너 자동 실행 시키기 본문
도커 컨네이너를 서비스로 등록하여 부팅시 자동으로 실행되도록 설정해보겠습니다.
라즈비안 OS환경에서 실행했으며(우분투에서도 동일하게 동작합니다.) Django 웹서버로 만든 도커 컨테이너를 사용하겠습니다.
먼저 /etc/systemd/system 폴더에 .service파일을 작성해주어야 합니다.
서비스 파일명은 자유롭게 설정해주면 되며 저는 "docker-django.service"로 설정하였습니다.
//커멘드
sudo vim /etc/systemd/system docker-django.service
//docker-django.service 파일
[Unit]
Description=My Django Server
Wants=docker.service
After-docker.service
[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/docker start [컨테이너 이름]
ExecStop=/usr/bin/docker stop [컨테이너 이름]
[Install]
WantedBy=multi-user.target
- Description : 이 서비스를 설명하는 내용을 적는 부분입니다.
- After, Wants : 명시된 서비스/환경이 시작된 이후에 우리 서비스를 실행하라는 설정입니다.
- ExecStart : 실행할 어플리케이션이 위치한 전체 경로를 입력해주어야 합니다. 저의 경우에는 /usr/bin 폴더에 docker실행파일이 위치해 있습니다.
systemd unit의 옵션들은 아래 블로그를 참고했습니다.
그런 다음 systemctl을 이용해서 서비스를 시스템에 등록해줍니다.
sudo systemctl enable docker-django.service
재부팅 후 아래 명령어를 이용해서 서비스의 실행상태를 확인합니다.
systemctl status docker-django.service
active가 찍혀있으면 정상적으로 실행되고 있다는 의미입니다.
+추가
active옆에 (exited)라고 적혀있어서 다른 서비스들을 확인해보니 active(running) 인 것도 있고 active(exited)인 것도 있었지만 모두 정상적으로 실행되고 있었습니다. exit와 running의 차이점이 궁금해 찾아본 결과
제가 작성한 .service파일은 systemd의 특징인 monitoring이나 respawning을 사용하지 않고 단순히 Daemon을 실행시키는 스크립트일 뿐이어서, 도커 컨테이너를 실행시키는 스크립트를 정상적으로 실행하고 Exited되었다는 의미인 것 같습니다. 즉 active(running)이나 active(exited)이나 문제 없는 정상적인 실행입니다.
'Docker' 카테고리의 다른 글
[Docker] none 이미지 삭제하기 (1) | 2021.12.29 |
---|