일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- sql-mappler
- OS
- 프로세스
- none이미지
- Spring
- FunctionalInterface
- Thread Multiplexing
- task_struct
- functional interface
- strict stubbing
- django-crontab
- 문자열 불변성
- hiberbate
- Thread Library
- Process
- 함수형 인터페이스
- 도커
- python-socketio
- java.util.function
- 쓰레드 라이브러리
- AOP
- 롬복주의점
- SystemCall
- 문자열 리터럴
- rainbow table
- spring-data-jpa
- 운영체제
- custom annotation
- ReflectUtils
- @Header
- 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의 옵션들은 아래 블로그를 참고했습니다.
systemd unit 등록 관련 옵션 정리
- RHEL 7 의 OS 적인 가장 큰 변화는 3.x 커널을 사용한다는 점(물론 2.6.x 커널에서 큰 차이가 있는 것은 아니다.) 그리고 정통적인 init 데몬에서 systemd 데몬으로 변경이 되었다는 점이다. systemd 에 대
fmd1225.tistory.com
그런 다음 systemctl을 이용해서 서비스를 시스템에 등록해줍니다.
sudo systemctl enable docker-django.service
재부팅 후 아래 명령어를 이용해서 서비스의 실행상태를 확인합니다.
systemctl status docker-django.service
active가 찍혀있으면 정상적으로 실행되고 있다는 의미입니다.
+추가
active옆에 (exited)라고 적혀있어서 다른 서비스들을 확인해보니 active(running) 인 것도 있고 active(exited)인 것도 있었지만 모두 정상적으로 실행되고 있었습니다. exit와 running의 차이점이 궁금해 찾아본 결과
systemctl status active: exited vs running
Sorry for this noob question, I searched for it and found no explanation. I'm unable to understand the different of systemctl status active (exited) for active (running). Here are 2 examples on my ...
askubuntu.com
제가 작성한 .service파일은 systemd의 특징인 monitoring이나 respawning을 사용하지 않고 단순히 Daemon을 실행시키는 스크립트일 뿐이어서, 도커 컨테이너를 실행시키는 스크립트를 정상적으로 실행하고 Exited되었다는 의미인 것 같습니다. 즉 active(running)이나 active(exited)이나 문제 없는 정상적인 실행입니다.
'Docker' 카테고리의 다른 글
[Docker] none 이미지 삭제하기 (1) | 2021.12.29 |
---|