SPARQL Protocol and RDF Query Language/Travail pratique/Installer Linux

Début de la boite de navigation du travail pratique
Installer Linux
Image logo représentative de la faculté
T.P. no 1
Leçon : SPARQL Protocol and RDF Query Language

TP de niveau 15.

Précédent :Sommaire
Suivant :Faire un serveur Web
En raison de limitations techniques, la typographie souhaitable du titre, « Travail pratique : Installer Linux
SPARQL Protocol and RDF Query Language/Travail pratique/Installer Linux
 », n'a pu être restituée correctement ci-dessus.

Introduction

modifier

Pourquoi Linux ?

modifier

La grande majorité des triplestores utilisent les librairies de Redland (librdf.org). Ces librairies ne sont maintenues que sous Linux. C'est la raison pour laquelle tous les serveurs SPARQL performants ne fonctionnent que sous Linux.

Pourquoi utiliser Docker ?

modifier
 
 
Avantages de Docker sur les machines virtuelles.

J’ai entendu à plusieurs reprises des étudiants ne désirant pas modifier la configuration de leur ordinateur. De nos jours, les installations Linux cohabitent parfaitement avec un système Windows et donc avec leurs jeux préférés ;)

Docker est une plate-forme ouverte pour développer, partager et exécuter des applications en dissociant les applications du système qu'il l’exécute. Docker permet également de tester des systèmes d'exploitation et se rapproche ainsi de solution comme OpenStack. Docker permet de tester des scripts d'installation comme si on les utilisait sur un serveur en situation réel.

Nous utiliserons Docker afin de simuler l’installation réelle de services SPARQL sur un serveur CentOS via un accès SSH. Il est indispensable qu'au moins une fois, un développeur soit confronté à l'installation d'un logiciel via SSH.

Installation d'une instance CentOS via Docker

modifier

Si vous ne savez pas ce qu'est Docker, je vous conseille d'aller lire quelques introductions à Docker sur le Web avant de poursuivre.

Installation de Docker Community Edition (CE)

modifier

Choisissez la plateforme que vous utilisez puis il suffit de suivre les instructions[1]. Si vous utilisez déjà Linux, il faut préférer l'installation via un package (en fonction de votre distribution Linux via yum, dnf, apt-get, etc.)

Ensuite pour vérifier votre installation, vous utiliserez ces commandes :

## List Docker CLI commands
docker
docker container --help

## Display Docker version and info
docker --version
docker version
docker info

## Execute Docker image
docker run hello-world

## List Docker images
docker image ls

## List Docker containers (running, all, all in quiet mode)
docker container ls
docker container ls --all
docker container ls -aq

Créer le projet Docker pour CentOS

modifier

Les images des conteneurs peuvent être téléchargées et partagées sur https://hub.docker.com/explore/, ou générées à partir d'un fichier nommé Dokerfile par défaut (sinon il faudra préciser son nom dans les commandes avec l'argument "-f").

Nous allons durant les TP travailler sur une instance de CentOS7 dans un conteneur Docker en passant par un service SSH comme si c'était un vrai serveur. Cependant, il faut comprendre que Docker n'est pas un outil de mise en production. Il sert à tester des logiciels ou à les développer comme nous allons le faire.

Le fichier Dokerfile qui permettra de construire l'image de notre serveur CentOS 7.

Si vous avez Git, vous pouvez utiliser Git pour télécharger le projet directement :

git clone https://github.com/BorderCloud/CentOS7-SSHD-Docker.git

Sinon créer le fichier Dokerfile en y insérant le texte suivant :

FROM centos/systemd

#update the server
RUN yum -y update; yum clean all;

#INSTALL SSHD
RUN yum -y install openssh-server passwd sudo vim wget curl; yum clean all
EXPOSE 22

# Init the root's password : centos
# Create a sudo user : centos with password centos
RUN  	echo -e "centos\ncentos" | passwd ; \
		useradd centos ; \
		SSH_USERPASS=centos ;\
		echo -e "centos\ncentos" | (passwd --stdin centos) ; \
		usermod -aG wheel centos


# HERE INSERT OTHER SCRIPTS

CMD ["/usr/sbin/init"]

Construire l’image Docker pour CentOS

modifier

Dans le répertoire où se trouve votre fichier Dockerfile, exécuter cette commande pour construire l'image Docker :

docker build -t centos7 .

Construire le conteneur et démarrer CentOS

modifier

CentOS a besoin quelque fois de certains droits d'accès (avec systemctl par exemple) et l'option "privileged" devient nécessaire. La ligne de commande a relancer à chaque changement de script est la suivante :

docker run --privileged --name instance.centos7 -h centos7 -d centos7

Si vous voulez supprimer le conteneur pour la reconstruire.

docker stop instance.centos7
docker rm instance.centos7
# docker start instance.centos7

Accéder votre instance CentOS en mode root

modifier

Classiquement pour ouvrir un shell en mode root, vous n’avez pas besoin de passer par ssh. Via cette commande :

docker exec -it instance.centos7 bash

Cependant, le service SSH dans votre container va nous permettre d'apprendre à configurer votre PC pour accéder aux services que vous allez installer durant le TP.

Accéder via SSH à votre instance CentOS

modifier

En fonction de votre installation, l'accès aux conteneurs est différent. Via les installateurs Windows et Mac de Docker CE, il faut créer des passerelles entre les ports du conteneurs et ceux de votre système. Sous Linux, on peut accéder aux conteneurs directement via des adresses réseaux locales.

Mot de passe

modifier

Le mot de passe est "centos" pour l'utilisateur centos et root.

Pour passer en mode root sous CentOS, utiliser la commande :

su -

Vous pouvez aussi utiliser la commande sudo.

Sur Windows ou Mac

modifier

Vous devez installer Kitematic via le menu de Docker CE et lire sa documentation.

Quand le conteneur fonctionne, vous allez pourvoir via Kitematic (onglet settings) préciser que le port 22 du conteneur sera accessible via le port 23 de votre PC (le port 22 semble ne pas fonctionner pour tout le monde).

Quand cela sera fait, vous pourrez ensuite utiliser Putty ou autre pour accéder à votre conteneur SSH (via le port 23) comme s'il s'agissait d'un serveur distant.

Sur Linux

modifier

Lorsqu'on démarre un conteneur sous Linux, Docker alloue une IP dynamiquement. Vous pouvez connaitre l'IP de votre conteneur avec cette commande :

	docker network inspect bridge

En général, c'est l'adresse "172.17.0.2" qui est utilisé quand il n'y a pas d'autres conteneurs en activité.

Ensuite, vous pouvez utiliser la commande ssh :

ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" centos@172.17.0.2

Les options servent à éviter les avertissements qui apparaissent à chaque reconstruction du conteneur.

Autres commandes utiles avec Docker

modifier
# Démarrer le conteneur
docker start instance.centos7

# Arrêter le conteneur
docker stop instance.centos7

# Supprimer le conteneur
docker rm instance.centos7

# Supprimer les images qui n'ont plus aucun conteneur associé (pour récupérer des gigas de mémoire morte)
docker image prune -a
  docker image prune -a peut effacer des images utilisées par les conteneurs lancés.

Docker-compose

modifier

La commande docker-compose est un utilitaire généralement fourni avec Docker, permettant d'orchestrer plusieurs images et conteneurs avec la même commande[2]. Pour ce faire, les paramétrages de l’ensemble des conteneurs doit être définit dans le fichier docker-compose.yml à la racine du projet.

Exemple de docker-compose.yml contenant un seul conteneur CentOS :

version: '3.2'
services:
  centos:
    hostname: centos
    container_name: centos
    image: 'centos/systemd'

Ensuite pour relancer le conteneur :

sudo docker-compose stop; sudo docker-compose build; sudo docker-compose up -d

Pour utiliser le conteneur, on peut rentrer dedans :

sudo docker-compose run centos bash

Ou exécuter une seule commande shell dedans avant de revenir à la machine hôte :

sudo docker exec centos sh -c 'ls -alh'

Pour voir les logs de tous les conteneurs en live :

 docker-compose logs -f

Pour supprimer ces logs :

 find /var/lib/docker/containers/ -type f -name "*.log" -delete

Puis redémarrer les conteneurs pour qu'ils recréent des logs.

Problèmes connus

modifier

Si un conteneur ne se lance pas

modifier

Investiguer avec :

sudo docker logs nom_du_conteneur

Réinitialiser les conteneurs à zéro

modifier
sudo docker rm -f $(sudo docker ps -a -q); docker rmi -f $(sudo docker images -q); docker network rm $(sudo docker network ls -q)

Récupérer l'IP d'un conteneur

modifier
sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nom_du_conteneur

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

modifier

Relancer docker en administrateur.

Installation native de Linux avec Ubuntu (si vous n'utilisez pas Docker)

modifier

Les TP peuvent se dérouler sous Ubuntu.

La communauté française d’Ubuntu est très développée et il ne faut pas hésiter à poser des questions via les forums en cas de difficultés.

Si c’est la première fois que vous touchez à Linux. Il faut prendre son temps et essayer de lire en détail le guide d'installation pour comprendre au maximum ce que vous êtes en train de faire.

Obtenir un CD-ROM d'installation d'Ubuntu

modifier

Le guide d'installation du site ubuntu-fr.org étant une référence, ce TP se limitera à vous indiquer les pages du guide à lire et à suivre. Graver un CD-ROM d'installation d'Ubuntu :

Amorçage de l'ordinateur sur le CD-ROM d'installation d'Ubuntu

modifier

Amorcer le CD sur l'ordinateur à installer

Installer Ubuntu avec le CD-ROM d'installation

modifier

Installer Ubuntu

Après l'installation

modifier

Configurer votre firewall ainsi que votre connexion Internet

Références

modifier