lunarviews
lunarviews

| Home | Posts | Codes | About |

  ⎘   Stopper docker des qu'on a plus bésoin.

allo !!!

Un script pour stopper docker et son interface réséau.

Des fois on demarre docker juste pour tester quelque chose, une fois fini ce n’est plus la peine de le laisser tourner pour rien. J’ai codé ce petit script que j’utilise sur Archlinux avec un alias des que je n’en ai plus besoin.
D’abord l’alias et puis ensuite le script:

1
2
alias stpd
stpd='sudo ~/codes/docker/stopDocker/stopDocker.sh'

Il faut le lancer en root car on va killer le daemon docker. Ce n’est pas super utile car il suffit de taper docker ps et puis docker se remets en route mais …

 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/bash

# Stoppe le daemon docker et son device reseau.
SUCCES=0

# Colors
RED=$(printf '\033[31m')
BLUE=$(printf '\033[34m')
BOLD=$(printf '\033[1m')
RESET=$(printf '\033[m')

# Demande confirmation.
function yes_or_no() {
  while true; do
    read -p "$* [y/n]: " yn
      case $yn in
        [Yy]*) return 0  ;;
        [Nn]*) echo "Annulation confirmée." ; exit $SUCCES ;;
      esac
  done
}

# Arrêt de l'interface réseau.
function arret_interface(){
    if [[ -n $(ip maddr | grep $1) ]]; then
    sudo ip link set dev $1 down && echo "$BLUE L'interface réseau $1 est deconnectée. $RESET"
  else
    echo "L'interface $1 est déjà a l'arrêt."
  fi
}

# Droits root ?
if [ "$EUID" -ne 0 ]; then
    echo "$RED Vous devez avoir des privilèges d'administration pour cette action. $RESET"
    echo
    exit $SUCCES 
else
    P_ID=$(pidof dockerd)
    DEVICE="docker0"
    
    # pid dockerd est null ?
    if [[ -n $P_ID ]]; then
        echo "Le processus $BOLD dockerd $RESET avec le pid : $P_ID sera arrêté."
        yes_or_no
        #pkill or killall dockerd
        sudo kill $P_ID 
        echo "$BLUE Docker est a l'arrêt. $RESET"
        arret_interface $DEVICE
        echo ""
    else
        echo " Docker est deja a l'arrêt."
        arret_interface $DEVICE
        printf '\a'
    fi
fi

exit $SUCCES 
#stopDocker.sh (END)

On étais parti d’ici (device down), on a tente d’automatiser plus haut.

1
sudo ip link set dev docker0 down

Et puis c’est pour le plaisir de faire un petit script.

A lire : un site intéressant sur la manipulation réseau avec docker.

---