¿Como iniciar un contenedor Docker automáticamente cuando inicia tu servidor?

Aquí explico como crear un servicio en Linux para que al partir tu servidor, automaticamente se inicie y despliegue un contenedor docker ya creado.

¿Que necesitamos como pre-requisito?

  • Servidor Linux. En mi caso tengo CentOS
  • Docker instalado
  • Contenedor ya creado. En mi caso tengo Jenkins con un volumen montado directamente del sistema Host

Manos a la obra!!

 

Para lograr esto utilizaremos systemd.

Se debe crear en la ruta /etc/systemd/system/ un archivo descriptor de servicio y luego habilitarlo.

  • Creamos un archivo de servicio, en esta caso lo llamaremos docker-jenkins.service
				
					touch docker-jenkins.service
				
			

Editamos este archivo con nuestro editor favorito (mi caso vi) y escribimos el servicio con el siguiente formato:

				
					[Unit]
Description=Jenkins container  
Requires=docker.service  
After=docker.service

[Service]
Restart=always  
ExecStart=/usr/bin/docker start -a jenkins  
ExecStop=/usr/bin/docker stop -t 2 jenkins

[Install]
WantedBy=default.target

				
			

Finalmente, habilitamos el servicio en el sistema operativo

				
					systemcl enable docker-jenkins.service