Afficher/cacher Sommaire
Docker
Docker a pour objectif de faciliter le déploiement d’applications, d’avoir plusieurs versions d’une même application sur un son serveur (phase de développement, tests), mais aussi d’automatiser le packaging d’applications. Avec Docker, on s’oriente vers de l’intégration et du déploiement en continu grâce au système de container.
De plus, Docker permet de garder son système de base propre, tout en installant de nouvelles fonctionnalités au sein de containers. En quelque sorte, on part d’une base qui est le système d’exploitation et on ajoute différentes briques conteneurisées qui sont les applications.
On se connecte sur shuttle (yunohost yanspm.com et ouestline.net)
sshm shuttle
Installation Docker sur serveur Shuttle
Création bash
nano docker-install.sh
#!/bin/bash
# compiled from https://docs.docker.com/engine/installation/linux/debian/#/debian-jessie-80-64-bit
sudo apt-get update
sudo apt-get dist-upgrade -y
sudo apt-get install apt-transport-https ca-certificates -y
sudo sh -c "echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list"
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-get update
sudo apt-cache policy docker-engine
sudo apt-get install docker-engine -y
sudo service docker start
sudo docker run hello-world
sudo group add docker
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo service docker restart
Droits et exécution
chmod +x docker-install.sh
./docker-install.sh
Gitlab
Installer image GitLab sur un seul conteneur
Les images GitLab Docker sont des images monolithiques de GitLab exécutant tous les services nécessaires sur un seul conteneur.
Installation GitLab Docker Image
Exécuter image GitLab
sudo docker run --detach \
--hostname gitlab.ouestline.net \
--publish 4443:443 --publish 8929:80 --publish 2922:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
Cela va télécharger et démarrer un conteneur GitLab CE et publier les ports nécessaires pour accéder à SSH, HTTP et HTTPS. Toutes les données GitLab seront stockées sous la forme de sous-répertoires de /srv/gitlab/. Le conteneur redémarre automatiquement après un redémarrage du système.
Vous pouvez maintenant vous connecter à l’interface Web comme expliqué dans Après avoir démarré un conteneur.
Paramétrage lanceur image gitlab
sudo docker stop gitlab
sudo docker rm gitlab
sudo docker run --detach \
--hostname gitlab.ouestline.net \
--publish 192.168.0.45:4443:443 \
--publish 192.168.0.45:8929:80 \
--publish 192.168.0.45:2922:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
Mise à niveau image GitLab
Pour mettre à niveau GitLab vers une nouvelle version, vous devez:
Arrêtez le conteneur courant:
sudo docker stop gitlab
Supprimez le conteneur existant:
sudo docker rm gitlab
Chargez la nouvelle image:
sudo docker pull gitlab/gitlab-ce:latest
Exécuter le conteneur avec les options précédemment spécifiées:
sudo docker run --detach \
--hostname gitlab.ouestline.net \
--publish 192.168.0.45:4443:443 \
--publish 192.168.0.45:8929:80 \
--publish 192.168.0.45:2922:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
Configuration vhost serveur shuttle
Installer Gitlab en https avec Docker et Nginx
Créer un proxy sur le serveur shuttle
On utilise l’adresse ip 192.168.0.45 du serveur shuttle et le port 8929
Utilisation du sous domaine gitlab.ouestline.net
Modifier le fichier de configuration vhost /etc/nginx/conf.d/subdomain.ouestline.net.conf
Ajouter en fin de fichier
# proxy gitlab
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name gitlab.ouestline.net;
include ssl_params;
ssl_dhparam /etc/ssl/private/dh4096.pem;
location / {
proxy_pass http://192.168.0.45:8929;
}
#logs
access_log /var/log/nginx/gitlab.ouestline.net-access.log;
error_log /var/log/nginx/gitlab.ouestline.net-error.log;
}
Relancer le serveur après vérification
sudo nginx -t
sudo systemctl restart nginx
Ouvrir le port SSH pour gitlab
sudo yunohost firewall allow TCP 2922
Utilisation GitLab
Accéder au gitlab https://gitlab.ouestline.net
Premier accès au site
Saisir un mot de passe et confirmer à la première connexion
Cliquer ensuite sur Register pour la saisie d’un utilisateur
Name : ouestgit
Username : ouestgit
Email : ouestgit@ouestline.net
Password (8 car min) : xxxxxxxxxx
Cliquer sur New group
Group : open-source
Group name : yanspm
Description : Projets divers
Public The group and any public projects can be viewed without any authentication.
Cliquer sur Create group
Cliquer sur New Project
Public The project can be cloned without any authentication.
Project Description : Création de site statique jekyll
Cliquer sur import project from git repo by url
Git repository URL : https://github.com/yanspm/wikistatic.git
Project name : wikistatic
puis cliquer sur Create project
Le projet est importé de Git
Sur le poste distant
Clé SSH rsa pour gitlab
Créer une clé SSH rsa pour gitlab
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -f gitlabkey -C "ouestgit@ouestline.net"
cat ~/.ssh/gitlabkey.pub # copier le contenu du fichier dans le presse papier
Accéder au gitlab https://gitlab.ouestline.net
Cliquer en haut à doite de l’écran sur ,puis sur Settings dans la fenêtre déroulante
Onglet SSH Keys
Coller le contenu de la clé publique (cat ~/.ssh/gitlabkey.pub), Title Clé publique ouestgit
Cliquer sur Add key
renseigner votre nom et votre adresse de courriel.
git config --global user.name ouestgit
git config --global user.email ouestgit@ouestline.net
Git : Liste des entrepôts distants associés
Git de base
Quand un entrepôt est créé avec la commande clone, un lien vers l’entrepôt d’origine est conservé. Pour obtenir la liste des entrepôts distants associés à un entrepôt on utilise la commande git remote.
git remote -v
origin https://github.com/yanspm/wikistatic.git (fetch)
origin https://github.com/yanspm/wikistatic.git (push)
Modifier les URL , passage de github à gitlab
Syntaxe : **git remote set-url [–push]
git remote set-url origin https://gitlab.ouestline.net/open-source/wikistatic.git https://github.com/yanspm/wikistatic.git
git remote -v
origin https://gitlab.ouestline.net/open-source/wikistatic.git (fetch)
origin https://gitlab.ouestline.net/open-source/wikistatic.git (push)
Git : Vérifier le status du projet wikistatic
cd media/devel/git/wikistatic/
git status
Sur la branche master
Votre branche est en avance sur 'origin/master' de 1 commit.
(utilisez "git push" pour publier vos commits locaux)
rien à valider, la copie de travail est propre
git push
Username for 'https://gitlab.ouestline.net': ouestgit@ouestline.net
Password for 'https://ouestgit@ouestline.net@gitlab.ouestline.net':
To https://gitlab.ouestline.net/open-source/wikistatic.git
! [rejected] master -> master (fetch first)
error: impossible de pousser des références vers 'https://gitlab.ouestline.net/open-source/wikistatic.git'
astuce: Les mises à jour ont été rejetées car la branche distante contient du travail que
astuce: vous n'avez pas en local. Ceci est généralement causé par un autre dépôt poussé
astuce: vers la même référence. Vous pourriez intégrer d'abord les changements distants
astuce: (par exemple 'git pull ...') avant de pousser à nouveau.
astuce: Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus d'information.
git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Dépaquetage des objets: 100% (3/3), fait.
Depuis https://gitlab.ouestline.net/open-source/wikistatic
ec0a967..1b1c38a master -> origin/master
Mise à jour 4ba2723..1b1c38a
Fast-forward
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
git push
Username for 'https://gitlab.ouestline.net': ouestgit@ouestline.net
Password for 'https://ouestgit@ouestline.net@gitlab.ouestline.net':
Everything up-to-date
Git : Sauvegarde log/mp
Commandes pour stocker les informations de connexion au gitlab
git config --global credential.helper store
Le fichier de configuration ~/.gitconfig
[user]
name = ouestgit
email = ouestgit@ouestline.net
[credential]
helper = store
Faire un premier git push
pour la saisie des informations de connexion
git push
Username for 'https://gitlab.ouestline.net': ouestgit@ouestline.net
Password for 'https://ouestgit@ouestline.net@gitlab.ouestline.net':
Everything up-to-date
Puis un second git push
, pas de saisie
git push
Everything up-to-date
Docker : Sauvegarde Restauration Suppression
Sauvegarde / Restauration de Conteneurs DOCKER
Docker backup – Easy steps to backup and restore your containers
Lorsque l’on veut enregistrer les modifications faites sur un conteneur on utilise la commande commit qui vas se charger de créer une image instantanée de notre conteneur. Les modifications faites sur le 1er conteneur sont donc tout enregistrées dans notre image. L’intérêt ici est de pouvoir désormais instancier un conteneur directement à partir de l’image que l’on a enregistrée.
Syntaxe :
docker commit -p ID_conteneur_a_sauvegarder Nom_Conteneur_de_sauvegarde
Liste des conteneurs
sudo -s
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0adf06d6dff2 gitlab/gitlab-ce:latest "/assets/wrapper" 3 days ago Up 3 days (healthy) 192.168.0.45:2922->22/tcp, 192.168.0.45:8929->80/tcp, 192.168.0.45:4443->443/tcp gitlab
Sauvegarde interne
docker commit -p 0adf06d6dff2 gitlab_backup_20170511
Il nous renvoie le checksum
sha256:a023bba94702877d4de62ad3230581d4cf5f9fd1a78fe55c6b9397a6d71f5b37
Les images
docker images
gitlab_backup_20170511 latest a023bba94702 About a minute ago 1.15GB
gitlab/gitlab-ce latest 9eacf3c0aeec 5 days ago 1.1GB
hello-world latest 48b5124b2768 3 months ago 1.84kB
Sauvegarde locale d’une image (dans un autre dossier)
Si vous souhaitez sauvegarder votre image en local dans un fichier compressé (tar) afin de le de le déplacer sur un serveur hors ligne ou même sur votre espace de sauvegarder privée. Vous devez utiliser la commande docker Save et vous lui passé le chemin et le nom du fichier de sauvegarder ainsi que le nom de l’image à sauvegarder (l’image que l’on a enregistrée précédent).
Créer un dossier /media/yanplus/sauvegarde/docker sur le shuttle
docker save -o /media/yanplus/sauvegarde/docker/gitlab_backup_20170511.tar gitlab_backup_20170511
Restauration depuis un conteneur en local ou un espace privé
Pour restaurer une image que nous avons sauvegardée en local, il suffit d’utiliser la commande docker load et de lui indiquer en paramètre le chemin d’accès à notre fichier de sauvegarde.
docker load –i /media/yanplus/sauvegarde/docker/gitlab_backup_20170511.tar
Vérifier la présence de l’image restaurée
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab_backup_20170511 latest a023bba94702 17 minutes ago 1.15GB
Arrêtez le conteneur courant:
sudo docker stop gitlab
Exécuter le conteneur issu de la sauvegarde les options précédemment spécifiées:
sudo docker run --detach \
--hostname gitlab.ouestline.net \
--publish 192.168.0.45:4443:443 \
--publish 192.168.0.45:8929:80 \
--publish 192.168.0.45:2922:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab_backup_20170511:latest
Supprimer une image
Liste des images
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab_backup_20170511 latest a023bba94702 About an hour ago 1.15GB
gitlab/gitlab-ce latest 9eacf3c0aeec 5 days ago 1.1GB
hello-world latest 48b5124b2768 3 months ago 1.84kB
On efface en fournissant ID
docker rmi a023bba94702
Untagged: gitlab_backup_20170511:latest
Deleted: sha256:a023bba94702877d4de62ad3230581d4cf5f9fd1a78fe55c6b9397a6d71f5b37
Deleted: sha256:7694728f802343f2ea8f082d3a878c3134afcab3970f9eb38f8912986c3ab9b9
Désinstaller Docker
Pour une désinstallation complète
sudo apt-get purge docker-engine
sudo apt-get autoremove --purge docker-engine
rm sudo -rf /var/lib/docker # This deletes all images, containers, and volumes