본문 바로가기
오래된글/Articles

시스템 부팅시 도커 컨테이너 자동 실행

by Andrew's Akashic Records 2018. 5. 3.
728x90

Docker 컨테이너를 운용중인 시스템이 Reboot 되버리면 컨테이너가 자동으로 올라오지 않아 불편해서 시스템 리붓시 컨테이너를 자동으로 시작되게 init 데몬에 등록하기로 했습니다.


  • 서버는 “JAN”  Ubuntu 17.10

  • Docker는 17.09.1-ce


등록할 컨데이너 목록


  • main_redmine : Redmine

  • main_redmine/postgresql: Redmine 전용 DB

  • main_oracle11g: oracle 11g

  • main_jenkins: Jenkins

  • main_nexus: Nexus2

  • main_portainer: Docker Management Tool

  • main_tomcat: Tomcat 8.0


"/etc/systemd/system"에 각각의 컨테이너이름을 넣은 아래의 형식으로 service파일들을 생성 합니다.


[Unit]

Wants=docker.service

After=docker.service

[Service]

RemainAfterExit=yes

ExecStart=/usr/bin/docker start main_tomcat

ExecStop=/usr/bin/docker stop main_tomcat

[Install]

WantedBy=multi-user.target


저는 아래와 같이 7개의 파일을 만들었습니다.


  • dc_main_jenkins.service

  • dc_main_nexus.service

  • dc_main_oracle11g.service

  • dc_main_portainer.service

  • dc_main_redmine.service

  • dc_main_redmine_db.service

  • dc_main_tomcat.service


“systemctl enable 서비스명” 명령어로 데몬에 등록을 시켜줍니다.


  • systemctl enable dc_main_jenkins

  • systemctl enable dc_main_nexus

  • systemctl enable dc_main_oracle11g

  • systemctl enable dc_main_portainer

  • systemctl enable dc_main_redmine

  • systemctl enable dc_main_redmine_db

  • systemctl enable dc_main_tomcat


끝입니다. 잘 동작하는지 확인하고 싶다면 시스템을 리붓해보면 되겠지만 그건 무리겠지요.


docker stop 명령어로 현재 실행중인 main_tomcat을 종료해봅니다.

그리고


“systemctl start dc_main_tomcat”


sudo docker ps 로 확인해서 “main_tomcat” 이 실행되어 있다면  잘 동작 한다고 보시면 됩니다.

728x90