Leçons de niveau 15

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

Une page de Wikiversité.
Sauter à la navigation Sauter à la recherche
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

Ce TP est de niveau 15.

Précédent :Sommaire
Suivant :Faire un serveur Web
Icon falscher Titel.svg
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 | modifier le wikicode]

Pourquoi Linux ?[modifier | modifier le wikicode]

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 | modifier le wikicode]

Docker (container engine) logo.svg
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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

# 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 faire le ménage)
docker image prune -a

Docker-compose[modifier | modifier le wikicode]

La commande docker-compose est un utilitaire généralement fourni avec Docker, permettant de gérer 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.

Problèmes connus[modifier | modifier le wikicode]

Si un conteneur ne se lance pas[modifier | modifier le wikicode]

Investiguer avec :

sudo docker logs nom_du_conteneur

Réinitialiser les conteneurs à zéro[modifier | modifier le wikicode]

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

Récupérer l'IP d'un conteneur[modifier | modifier le wikicode]

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 | modifier le wikicode]

Relancer docker en administrateur.

Installation native de Linux avec Ubuntu (si vous n'utilisez pas Docker)[modifier | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

Amorcer le CD sur l'ordinateur à installer

Installer Ubuntu avec le CD-ROM d'installation[modifier | modifier le wikicode]

Installer Ubuntu

Après l'installation[modifier | modifier le wikicode]

Configurer votre firewall ainsi que votre connexion Internet

Références[modifier | modifier le wikicode]