Vendredi 23 novembre 2018

Docker Debian 8 Jessie Server

Installer Docker sur le serveur Debian 8 Jessie Server via le dépôt officiel
Dans ce tutoriel, je vais vous montrer comment installer docker sur le serveur Debian 8 Jessie. La version Linux de Docker est divisée en docker-engine et docker-compose.

Conditions préalables

Docker prend en charge le système 64 bits avec noyau Linux 3.10+. Pour vérifier si votre système Debian est 32 ou 64 bits, utilisez la commande uname -m.

uname -m
  x86_64

Debian 8 est livré avec un noyau Linux 3.16.0. Utilisez la commande uname -r pour vérifier la version de votre noyau Linux.

user@debian8: ~$ uname -r
  3.16.0-5-amd64

Utilisez la commande suivante pour passer à la dernière version du noyau Linux disponible sur Debian 8.

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Notez que si votre VPS est virtualisé en utilisant la technologie OpenVZ plutôt que KVM, alors la version du noyau peut être très ancienne et vous n’êtes pas autorisé à mettre à jour le noyau sur OpenVZ VPS. KVM VPS est donc un meilleur choix.

Installer Docker sur le serveur Debian 8 Jessie Server

Ajouter la clé GPG Docker.

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

Créez un nouveau fichier source sous /etc/apt/sources.list.d/.

sudo nano /etc/apt/sources.list.d/docker.list

Ajoutez cette ligne dans le fichier et enregistrez le fichier.

deb https://apt.dockerproject.org/repo debian-jessie main

Parce que le dépôt docker nécessite une connexion HTTPS, nous devons donc installer les paquets apt-transport-https et ca-certificates pour que APT établisse une connexion HTTPS avec le dépôt docker.

sudo apt-get install apt-transport-https ca-certificates

Mettre à jour l’index local des paquets et installer docker sur Debian 8.

sudo apt update && sudo apt install docker-engine

Démarrez le service docker.

sudo systemctl start docker

Activez le démarrage automatique du docker

sudo systemctl enable docker

Vérifiez l’état

systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled)
   Active: active (running) since dim. 2018-01-21 13:33:12 CET; 1min 49s ago
     Docs: https://docs.docker.com
 Main PID: 20222 (dockerd)
   CGroup: /system.slice/docker.service
           ├─20222 /usr/bin/dockerd -H fd://
           └─20231 docker-containerd -l unix:///var/run/docker/libcontainerd/doc...

Vérifiez que l’installation de Docker fonctionne correctement avec cette commande:

sudo docker run hello-world

Si vous voyez ce message, alors il fonctionne correctement.

Hello from Docker!
This message shows that your installation appears to be working correctly.

Vérifiez la version Docker.

docker --version
    Docker version 17.05.0-ce, build 89658be

Ajout utilisateur au groupe docker pour utiliser les commandes ‘docker’ sans sudo.

sudo adduser $USER docker  # ou 'usermod -a -G docker  <votre user>'

Fermer puis réouvrir la session pour la prise en compte

Subsonic/Docker

On recherche

$ docker search subsonic    # https://hub.docker.com/r/cyrilix/subsonic/ https://github.com/cyrilix/docker-subsonic
 NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
 cyrilix/subsonic                       Subsonic media streamer                         18                   [OK]
 hurricane/subsonic                     Containerized version of subsonic.              10                   [OK]
 mschuerig/debian-subsonic              Moved to mschuerig/subsonic-docker-image        6                    [OK]
...

On prend le premier

$ docker pull cyrilix/subsonic
Using default tag: latest
latest: Pulling from cyrilix/subsonic
723254a2c089: Pull complete
abe15a44e12f: Pull complete
409a28e3cc3d: Pull complete
a9511c68044a: Pull complete
9d1b16e30bc8: Pull complete
0fc5a09c9242: Pull complete
d34976006493: Pull complete
3b70003f0c10: Pull complete
bc7887582e2e: Pull complete
d2ab4f165865: Pull complete
f671595c8b4b: Pull complete
cc8cdb15e511: Pull complete
5da952568088: Pull complete
4442437e0160: Pull complete
Digest: sha256:9f890ff0b9a2c6efae3ef654d1a72b354e2502b5ab06e131faa21154c80b5eef
Status: Downloaded newer image for cyrilix/subsonic:latest

Exécution

docker run \
  --detach \
  --publish 8080:8080 \
  --volume "/media/yanplus/Musique:/opt/music/:ro" \
  cyrilix/subsonic

Accès terminal

docker run -ti cyrilix/subsonic /bin/bash

Construire son image docker

[Docker] – Créer des images Dockers en toute simplicité et hors ligne !

On veut une version à jour de subsonic (6.1.3 au 21/08/2018) , cloner le dépôt

git clone https://github.com/cyrilix/docker-subsonic.git
cd docker-subsonic

On modifie la variable “ENV SUBSONIC_VERSION” dans le fichier Dockerfile

ENV SUBSONIC_VERSION 6.1.3

On construit

docker build -t yann/docker-subsonic .

Les identifiants des conteneurs voir http://blog2dev.blogspot.fr/2014/06/docker-mise-en-pratique.html

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
6cf0718f6d4b        cyrilix/subsonic    "/bin/bash"         6 hours ago         Exited (0) 6 hours ago                            vibrant_sinoussi
21598610abb3        cyrilix/subsonic    "/bin/bash"         6 hours ago         Exited (1) 6 hours ago                            quirky_brattain
023e13cd10c1        cyrilix/subsonic    "catalina.sh run"   7 hours ago         Exited (143) 20 seconds ago                       stoic_tesla
6d01d60d4d3f        cyrilix/subsonic    "/bin/bash"         7 hours ago         Exited (0) 7 hours ago                            frosty_noyce
cc5ccc1aca70        hello-world         "/hello"            7 hours ago         Exited (0) 7 hours ago                            unruffled_yalow

Arrêter tous les conteneurs

docker ps|sed "1 d"|awk '{print $1}'|xargs docker stop

Arrêter les conteneurs d’une même image (ici “image1”):

docker ps|sed "1 d"|grep "image1"|awk '{print $1}'|xargs docker stop

Supprimer tous les conteneurs

docker ps -a|sed "1 d"|awk '{print $1}'|xargs docker rm

Les images

docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
yann/docker-subsonic   latest              b5490946ca18        5 hours ago         769MB
cyrilix/subsonic       latest              df382c5f67c5        43 hours ago        769MB
tomcat                 8-jre8              66bbed06c8cd        2 days ago          557MB
hello-world            latest              f2a91732366c        2 months ago        1.85kB

Supprimer les images par leur nom

docker images|sed "1 d"|grep "hello-world"|awk '{print $3}'|sort|uniq|xargs docker rmi
docker images|sed "1 d"|grep "cyrilix/subsonic"|awk '{print $3}'|sort|uniq|xargs docker rmi

Exécuter l’image nouvellement construite dans un conteneur

docker run \
  --detach \
  --publish 8080:8080 \
  --volume "/media/yanplus/Musique:/opt/music/:ro" \
  yann/docker-subsonic

Vérifier

docker ps
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS                    NAMES
d680c988e314        yann/docker-subsonic   "catalina.sh run"   2 minutes ago       Up 2 minutes        0.0.0.0:8080->8080/tcp   thirsty_brattain

Créer un service subsonic-docker pour le lancement automatique

sudo nano /etc/systemd/system/subsonic-docker.service
[Unit]
Description=Subsonic container
Requires=docker.service
After=docker.service

[Service]
ExecStart=/usr/bin/docker run \
  --detach \
  --publish 8080:8080 \
  --volume "/media/yanplus/Musique:/opt/music/:ro" \
  yann/docker-subsonic
ExecStartPost=/bin/sleep 1

[Install]
WantedBy=multi-user.target

Démarrer le service

sudo systemctl start subsonic-docker.service

Vérifier si le conteneur est démarré

docker ps
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS                    NAMES
d8df42ab0833        yann/docker-subsonic   "catalina.sh run"   25 seconds ago      Up 24 seconds       0.0.0.0:8080->8080/tcp   elastic_beaver

Activer le service pour le prochain démarrage du serveur

sudo systemctl enable subsonic-docker.service