Aller au contenu

Enpécher un container de démarrer automatiquement au reboot du nas


gaetan.cambier

Messages recommandés

voila, je suis obliger de lancer mon container docker avec le paramètre "--device" 

lorsque je stop/start mon container via l'interface, le syno semble éiminer ce paramètre, ce qui n'est pas le cas de la ligne de commande heureusement

MAIS, il faudra tôt ou tard rebooter ce nas pour une update ...

Donc, comment faire pour que le container ne soit pas lancer par syno lors du reboot ? (je gère le reste :p)

Lien vers le commentaire
Partager sur d’autres sites

Le syno relance les container qui étaient lancés lors de l’arrêt

Une possibilité serait donc de créer un script d'upstart dans /usr/local/etc/rc.d/docker.sh (ou dans /usr/syno/etc/rc.d/S99docker.sh)

  • case start :  docker start  --device= .... (j'ajouterai un call au stop avant le start pour être certain)
  • case stop :  docker stop ID_du_container ...

Je n'ai pas testé, c'est une idée comme ça en passant

Lien vers le commentaire
Partager sur d’autres sites

Le syno relance les container qui étaient lancés lors de l’arrêt

Une possibilité serait donc de créer un script d'upstart dans /usr/local/etc/rc.d/docker.sh (ou dans /usr/syno/etc/rc.d/S99docker.sh)

  • case start :  docker start  --device= .... (j'ajouterai un call au stop avant le start pour être certain)
  • case stop :  docker stop ID_du_container ...

Je n'ai pas testé, c'est une idée comme ça en passant

je savait que c'etait toi qui repondrai ici :p

j'ai un peu regarder le start-stop-status de docker, il monte aufs, des module iptables,

donc, il y a un problème :

si on lance le script trop tot : on a pas tout pour faire fonctionner docker

si c'est trop tard, ben le container est lancé par le nas et pas par le script :s

alors, c'est p-e con, mais l'iddée serait celle-ci : je perturbe pas le nas et docker, je lui laisse faire ses conneries et après, je fait ceci :

#!/bin/ash
docker stop domoticz
docker rm domoticz

USB0=$(ls /dev/ttyACM*)

docker run -d -p 12345:8080 --name=domoticz -v /volume1/docker/data/domoticz/config:/config -v /volume1/docker/data/domoticz/etc/localtime:/etc/localtime:ro --device=$USB0 sdesbure/domoticz

je t'avoue que j'ai un peu de mal avec docker, mais de toute facon, je ne perd rien vu que ma config n'est pas stockée dans le container

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Débutant avec docker, j'ai lu qu'il fallait mieux éviter de passer par l'interface du syno pour gérer docker.

J'ai donc installé le spk de docker, et je m'en sers ensuite juste pour télécharger les images.

Ensuite, en ligne de commande, je créé mon container comme ca : 

docker run --name=[NEW CONTAINER] -d --restart=always --device=/dev/ttyUSB0:/dev/ttyUSB0 --device=/dev/ttyUSB1:/dev/ttyUSB1 -p 2080:80 -p 2022:22 -p 2083:8083 -p 2070:8070 -p 2001:9001 [IMAGE]

Ca marche plutot bien et le container redémarre au reboot du NAS. Par contre, j'ai systématiquement des problème de droits sur le serveur web (nginx) hébergé dans l'image quand il se relance au reboot du NAS... Alors que ca ne le fait pas si je le relance en ligne de commande.. Je pige pas.

Si quelqu'un sait avec quel user system le syno lance les container docker?

Merci

Lien vers le commentaire
Partager sur d’autres sites

#!/bin/ash
docker stop domoticz
docker rm domoticz

USB0=$(ls /dev/ttyACM*)

docker run -d -p 12345:8080 --name=domoticz -v /volume1/docker/data/domoticz/config:/config -v /volume1/docker/data/domoticz/etc/localtime:/etc/localtime:ro --device=$USB0 sdesbure/domoticz

 

c'est à peu près ce que je te proposais, pas de soucis à lancer le script trop tard si tu fais le stop+rm (tu peux aussi lancer ton conteneur avec docker run --rm=true pour supprimer le conteneur à son arrêt)

 

pour le compte utilisé par syno, un ps devrait te répondre, mais je pense que c'est root

Lien vers le commentaire
Partager sur d’autres sites

pour le compte utilisé, c'est bien root

pour le script , je ferai ça :

#!/bin/sh
#/usr/syno/etc/rc.d/S99custoDocker.sh

CONTAINERNAME="test"
IMAGE="repo/image"
######
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/bin
DOCKER_BIN="docker"
DOCKER_OPTIONS=""

docker_start() {
	$DOCKER_BIN run $DOCKER_OPTIONS --name $CONTAINERNAME -d $IMAGE
}
docker_stop() {
	$DOCKER_BIN inspect --format="{{ .State.Running }}" $CONTAINERNAME > /dev/null 2>&1
	if [ $? -eq 0 ]; then
		$DOCKER_BIN rm -f $CONTAINERNAME
	fi
}
case "$1" in
	start)
		docker_stop
		docker_start
		RETVAL=$?
		;;
	stop)
		docker_stop
		RETVAL=$?
		;;
	restart)
		docker_stop
		docker_start
		;;
	*)
		echo "start/stop/restart"
		exit 1
		;;
esac

exit $RETVAL

je n'ai pas testé son fonctionnement au reboot (pas envie de relancer un syno), mais ça ne devrait pas poser de problèmes

 

edit : j'ai oublié les commentaires, faites moi signe si c'est nécessaire

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.