web-dev-qa-db-fra.com

Comment faire en sorte qu'un conteneur Docker démarre automatiquement au démarrage du système?

Si je veux exécuter un conteneur Docker, je peux alors appeler

$ docker run ...

et tout va bien. Existe-t-il un moyen intégré d'exécuter un conteneur de manière à ce qu'il soit automatiquement redémarré, si le système se bloque et se réinitialise?

Si tel est le cas, est-ce également disponible dans Docker Compose?

41
Golo Roden

Oui, le menu fixe a stratégies de redémarrage tel que docker run --restart=always qui va gérer cela. Ceci est également disponible dans le fichier de configuration compose.yml en tant que restart: always.

53
Peter Lyons

Si vous souhaitez que le conteneur soit démarré même si aucun utilisateur n'a créé de connexion (telle que VirtualBox VM que je ne fais que démarrer et que je ne souhaite pas me connecter à chaque fois)), voici la procédure à suivre I effectué pour Ubuntu 16.04 LTS. Par exemple, j’ai installé un conteneur Oracle db:

$ docker pull alexeiled/docker-Oracle-xe-11g
$ docker run -d --name=MYPROJECT_Oracle_db --shm-size=2g -p 1521:1521 -p 8080:8080 alexeiled/docker-Oracle-xe-11g
$ vim /etc/systemd/system/docker-MYPROJECT-Oracle_db.service

et ajoutez le contenu suivant:

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

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

[Install]
WantedBy=default.target

et activer le service au démarrage

Sudo systemctl enable docker-MYPROJECT-Oracle_db.service

Pour plus d'informations https://docs.docker.com/engine/admin/Host_integration/

65
kon

Le politique de redémarrage par défaut est no.

Pour les conteneurs créés, utilisez docker update pour mettre à jour la politique de redémarrage.

docker update --restart=always 0576df221c0b

0576df221c0b est l'identifiant du conteneur.

31
Edward Young

Mode plus "doux" de la documentation:

docker run -dit --restart unless-stopped <image_name>
6
Rib47

Je voulais réaliser le démarrage du conteneur au démarrage sous Windows.

Par conséquent, je viens de créer une tâche planifiée qui se lance au démarrage du système. Cette tâche démarre simplement "Docker for Windows.exe" (ou quel que soit le nom de votre exécutable docker).

Ensuite, tous les conteneurs avec une politique de redémarrage de "toujours" vont démarrer.

0
TostMaster

Cest ce que crontab est pour:

@reboot sleep 10 && docker start <container name> 2>&1 | /usr/bin/logger -t 'docker start'

Accédez à votre utilisateur crontab par crontab -e ou le montrer avec crontab -l ou éditez votre crontab système à /etc/crontab

0
Sysinfo.io