Soutenir Vision du Web dans son partage de logiciels et de ressources libres

Ce mineur crée de la monnaie numérique Monero pour soutenir Vision du web.
Merci de désactiver votre bloqueur de publicité.
Aucune publicité ne sera affichée.
Le mineur utilise les ressources de votre machine pour créer gratuitement de la monnaie numérique.
Le montant des donations pour Vision du web est de 0.035581808289949 Monero.

Ajouter Docker sur GNU Linux

De Wiki. Analyse, Communication, Développement, Hacking.
Aller à : navigation, rechercher
Naviguer sur le wiki : Accueil du wiki - Sommaire Administrateur - Sommaire des projets - Sommaire pour Webmaster - Sommaire We make Hack
Naviguer sur le site : Accueil du site - Les annuaires - Les éditoriaux - Le forum - Les outils - Les projets

Installer Docker sur GNU/Linux

Docker sur Debian 8 Jessie

Sous Debian 8, il est possible d'installer Docker directement grâce au paquet docker.io disponible dans les dépôts Debian :
apt-get update
apt-get install docker.io
service docker start

Sinon,

Préférer l'ajout du dépôt dans le sources.list
Ajout du dépôt : echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list
Ajout de la clé : apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Mise à jour des dépôts : apt update
Installation de docker : apt install docker-engine
Démarrer Docker : systemctl start docker
Test de docker : docker run hello-world

Docker sur Debian 9 Stretch

Ajout du dépôt : echo "deb https://apt.dockerproject.org/repo debian-stretch main" > /etc/apt/sources.list.d/docker.list
Ajout de la clé : apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Mise à jour des dépôts : apt update
Installation de docker : apt install docker-engine
Installer aussi : docker-compose
Démarrer Docker : systemctl start docker

Hello Docker

Test de docker : docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete 
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
   (amd64)
3. The Docker daemon created a new container from that image which runs the
   executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
   to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/

Docker sur Ubuntu et Linux Mint

Les pré-requis

Passer en tant que root :
sudo -s
Installer le paquet Apparmor :
apt-get install apparmor
Installer le paquet linux-image-extra :
apt-get install linux-image-extra-$(uname -r)

Installation

Ajout du dépôt :
Ubuntu 14.04 LTS et Linux Mint 17.3 : echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
Ubuntu 15.10 : echo "deb https://apt.dockerproject.org/repo ubuntu-wily main" > /etc/apt/sources.list.d/docker.list
Ubuntu 16.04 LTS : echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" > /etc/apt/sources.list.d/docker.list
Ajout de la clé : apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Mise à jour des dépôts : apt-get update
Instalation de Docker : apt-get install docker-engine
Démarrage de Docker : service docker start
Test de docker : docker run hello-world

Docker sur CentOS

Ajout du dépôt :
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
Mise à jour des dépôts : sudo yum update
Installation de Docker : sudo yum install docker-engine
Démarrage de Docker : sudo service docker start
Test de Docker : sudo docker run hello-world

Docker sur Fedora

Mise à jour du système avec dnf : sudo dnf update
Ajout du dépôt :
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/fedora/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
Installation de Docker : sudo dnf install docker-engine
Démarrage de Docker : sudo systemctl start docker
Test de Docker : sudo docker run hello-world

Docker sur Arch Linux et Manjaro

Installation de Docker : sudo pacman -S docker
Démarrage de Docker : sudo systemctl start docker
Tes de Docker : sudo docker run hello-world

Introduction

Docker est développé avec le langage Go.
Pour en savoir plus, lire les fichiers man : man docker mais également le man de chaque commande man docker run.

L'image

Une image, c'est un instantané d'un système à un instant t.
C'est à partir d'une image que l'on peut lancer un container et donc un service.
Elle contient un mini système d'exploitation, Debian, Ubuntu, Alpine Linux, et une application spécifique.
Compilation d'un fichier DockerFile pour former une image portable, prête à être déployée.
DockerFile : Fichier source qui contient les instructions, éléments à installer, c'est un fichier de configuration.
Une image peu être dupliquée en alias.

Construire l'image sur l'hôte

Ok-ko.png Exemple 1.1 Source : https://blog.lmilcent.com/2016/03/25/docker-comment-ca-marche/

Récupérer une image existante dans les dépôts officiels pour Docker

Pour trouver une image LAMP, lancer une recherche dans les dépôts Docker : docker search lamp
Pour trouver une image Nginx, lancer une recherche dans les dépôts Docker : docker search Nginx
Pour trouver une image DemocracyOS, lancer une recherche dans les dépôts Docker : docker search DemocracyOS
Chercher dans le Hub : https://hub.docker.com
Survoler la liste : https://gist.github.com/carmark/89f9de6356f39149317968ccafe226a6
Choisir un DockerFile qui est régulièrement contrôlé. Ne pas prendre un dépôt sans documentation.

Installer une image Docker lamp

Quand on fait un docker pull, c’est pour récupérer et installer une image.
Dans le cas du dépôt pour lamp : docker pull tutum/lamp
# Le démarrage d'un container s'effectue grâce à docker run.
# Ce container écoute sur deux ports : le 80 pour le HTTP, le 3306 pour les connexions MySQL.
# On peut alors accéder à notre serveur web lamp :
docker run -d -p 80:80 -p 3306:3306 tutum/lamp
Démarrer le navigateur avec : http://localhost
Tutum-lamp.png

Installer une image Docker Nginx

Dans le cas du dépôt pour Nginx : docker pull nginx
docker run --name docker-nginx -p 80:80 nginx
Depuis le navigateur lancer localhost pour arriver sur la page d'accueil du serveur Nginx.
Welcome-nginx.png 
Lors de la visite de localhost, le terminal affiche la connexion locale :
172.17.0.1 - - [08/Jan/2018:01:28:48 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" "-"

Créer une page web pour le serveur Nginx

Tutoriel pour Ubuntu 14.
Source : https://www.digitalocean.com/community/tutorials/how-to-run-nginx-in-a-docker-container-on-ubuntu-14-04#step-5-%E2%80%94-building-a-web-page-to-serve-on-nginx

Installer une image Docker mysql

docker pull mysql
Séparer le Volume qui contiens des datas, de l'image.
Obtenir des backups de datas, sans faire de backup de toute l'image.
Utiliser le même volume de datas avec plusieurs images.
Mettre a jour les images sans toucher à l’intégrité des datas.
Simple, ouvert, sécurisé.

Installer une image Docker Mongo

# Tester l'image de MongoDB.
docker pull mongo-express
docker run --name demos1 -p 8081:8081 mongo-express
Welcome to mongo-express
------------------------
Server is open to allow connections from anyone (0.0.0.0)
basicAuth credentials are "admin:pass", it is recommended you change this in your config.js!
Mongo Express server listening at http://0.0.0.0:8081
/node_modules/mongodb/lib/server.js:265
       process.nextTick(function() { throw err; })
                                     ^
MongoError: failed to connect to server [mongo:27017] on first connect
   at Pool.<anonymous> (/node_modules/mongodb-core/lib/topologies/server.js:326:35)
   at emitOne (events.js:96:13)
   at Pool.emit (events.js:188:7)
   at Connection.<anonymous> (/node_modules/mongodb-core/lib/connection/pool.js:270:12)
   at Connection.g (events.js:292:16)
   at emitTwo (events.js:106:13)
   at Connection.emit (events.js:191:7)
   at Socket.<anonymous> (/node_modules/mongodb-core/lib/connection/connection.js:175:49)
   at Socket.g (events.js:292:16)
   at emitOne (events.js:96:13)

Installer une image Docker phpmyadmin

docker pull phpmyadmin/phpmyadmin

Installer une image Docker democracyos

# Production-ready image for running Democra...
Dans le cas du dépôt pour DemocracyOS : docker pull democracyos/democracyos
# Démarrer Democracyos
docker run --name demos -p 3000:3000 democracyos/democracyos
Le message d'erreur suivant est affiché :
(node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): undefined
events.js:160
     throw er; // Unhandled 'error' event
     ^
MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
   at Pool.<anonymous> (/usr/src/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:328:35)
   at emitOne (events.js:96:13)
   at Pool.emit (events.js:188:7)
   at Connection.<anonymous> (/usr/src/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:280:12)
   at Connection.g (events.js:292:16)
   at emitTwo (events.js:106:13)
   at Connection.emit (events.js:191:7)
   at Socket.<anonymous> (/usr/src/node_modules/mongoose/node_modules/mongodb-core/lib/connection/connection.js:177:49)
   at Socket.g (events.js:292:16)
   at emitOne (events.js:96:13)
   at Socket.emit (events.js:188:7)
   at emitErrorNT (net.js:1281:8)
   at _combinedTickCallback (internal/process/next_tick.js:80:11)
   at process._tickCallback (internal/process/next_tick.js:104:9)
Un ticket est ouvert : https://github.com/DemocracyOS/democracyos/issues/1478

Avec un script bash

echo -e "\n\t Arret du reverse proxy nginx \n"  
docker stop nginx-proxy                # Arret du container  
docker rm nginx-proxy                  # Suppression du container
echo -e "\n\t Mise à jour de l' image \n"  
docker pull jwilder/nginx-proxy:latest # :latest n'est pas obligatoire. On peut passer ici une version précise si elle existe.
echo -e "\n\t Lancement du reverse proxy nginx \n"  
docker run -d \                        # -d pour lancer le service comme un daemon  
 --restart=always \                   # En cas d'arrêt, docker essayera de relancer le container
 -p 80:80 -p 443:443 \                # Exposition des ports
 --name nginx-proxy \                 # Nom que je donne au container
 --env 'DEFAULT_HOST=www2.lmilcent.com' \ # Variable d'environnement SPECIFIQUE au container
 --env 'MAX_UPLOAD_SIZE=200M'\        # Idem
 -v /path/to/directory/conf.d \       # Exposer le dossier contenant les configurations
 -v /etc/nginx/vhost.d \              # idem : autre fichier de conf
 -v /usr/share/nginx/html \           # idem : fichiers d'erreurs html 
 -v /path/to/directory/certs:/etc/nginx/certs:ro \  # <Dossier hôte où sont les certificats pour le https>:<dossier du container>:<lecture seule (read only)>
 -v /var/run/docker.sock:/tmp/docker.sock:ro \      # Authorise toutes les connexions locales (utilisé pour joindre les autres services)
 -v /path/to/directory/my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro \ # idem : autre fichier de conf
   jwilder/nginx-proxy                # L'image utilisée pour créer le container

En utilisant docker-compose.yml

Installer le paquet docker-compose
Tenter le lancement depuis des docker-compose.yml
A suivre pour DemocracyOS.

Container

Exécution d'une image, mise en container d'une image. Un container est créé à partir d'une image.
Les conteneurs comprennent l’applicatif et ses dépendances. Ils sont isolés du système hote.

Arrêter ou Démarrer un container

Docker : Arrêter un container.
docker stop <container-id-ou-container-name>
Docker : Démarrer un container.
docker start <container-id-ou-container-name>
Docker : Redémarrer un container.
docker restart <container-id-ou-container-name>

Lister les container démarrés

# Lister les container arrêtés ("-a") ou non.
docker ps -a
# Lister les container démarrés.
docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                        NAMES
9eced4642ec9        tutum/lamp          "/run.sh"           26 minutes ago      Up 26 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:3306->3306/tcp   dreamy_meitner
CONTAINER ID : Identifiant du container.
IMAGE : Identifiant nominatif de l'image du container, avec notamment la version comme ici "latest" puisque c'est la plus récente.
COMMAND : Commande passée en paramètre lorsque le container a été créé.
CREATED : Date de création du container, ici "Il y a 5 heures".
STATUS : État du container, ici "En cours d'exécution depuis 5 heures".
PORTS : Les différentes redirections de ports configurées, rappelez-vous l'option -p...
NAMES : Nom aléatoire donné au conteneur, ceci est personnalisable grâce à l'option -name lors de l'exécution docker run.

Sauvegarder un container

Persistance des données

Lorsqu'un conteneur est créé et lancé, il peut arriver d'y faire des modifications.
Quand le conteneur est effacé, ces modifications disparaissent !
Pour les conserver, ou créer des sauvegardes à un instant T de l'état d'un conteneur, Docker fournit une possibilité de faire des commit.
Cette commande créée une nouvelle image à partir du conteneur actuel :
docker commit -a "Auteur" -m "message optionnel" <ID du conteneur ou nom> <Tag à donner à l'image>

Exporter une image vers un dossier

On peut exporter cette nouvelle image pour la déplacer vers un autre serveur, ou faire des tests dans un environnement de développement.
docker save -o <chemin> <id ou nom de l'image>
Cette commande va créer un fichier .tar.

Importer une image

Charger une image exportée dans docker pour l'utiliser à nouveau.
docker load -i <image exportée>.tar

Ressources utilisées par conteneur

Il est pratique de connaitre la consommation de chaque service dans un conteneur, voire de la limiter.
Cette commande permet d'afficher en temps réel la consommation de tous les conteneurs qui tournent.
docker stats $(docker ps | awk '{if(NR>1) print $NF}')

Supprimer un container

# Arrêter et supprimer tous les container.
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
# Supprimer uniquement un ID.
# Pour supprimer un container, il faut que le container soit arrêté.
# Forcer avec docker rm -f <conteneur>
docker rm container-Id
Il y a aussi l’option -rm de la commande run qui permet de supprimer automatiquement un container s’il s’arrête, cependant cette option est incompatible avec l’option -d, (detach) pour faire tourner le container comme un “démon”.
Supprimer container, image, volume : https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes
Supprimer images et container : https://tecadmin.net/remove-docker-images-and-containers/#

Supprimer une image

# Permet de visualiser la mémoire libre sur le disque (-m pour afficher en mégaoctets).
df -m
# Pour afficher les images locales:
docker images
# Lister toutes les images existantes.
docker images -a
# Supprimer
docker rmi Image
# Supprimer en forçant
docker rmi -f Image
Des images <none> peuvent être enregistrées.
Pour les supprimer :
docker rmi $(docker images -f "dangling=true" -q)

Exécuter une commande précise dans un container

docker exec -ti <nom ou ID du container> bash
docker exec -ti <nom ou ID du container> /bin/sh
docker exec -ti <nom ou ID du container> <commande à exécuter>  

Les logs

# Déboguer un container ou simplement connaître son état.
# Voir les logs en temps réel en ajoutant l'option -f.
docker logs <nom ou ID du container>

La gestion des réseaux

Créer un réseau interne

Dans ce cas, le réseau créé n'aura pas accès à internet,ou le réseau de l'hôte, et sera cantonné à docker.
docker network create --internal <nom>

Créer un réseau avec accès externe

Ici, le réseau créé aura accès à l'extérieur.
docker network create <nom>.

Installer Docker sous Windows

Commencer par télécharger Docker Toolbox : https://www.docker.com/toolbox
Installer le programme. (Virtualbox ne doit pas être lancé!)
Avant de pouvoir lancer un conteneur Docker vous devez créer ou lancer une machine virtuelle existante.
Ok-ko.png Source du tutoriel pour installer Docker sous Windows : https://www.noobunbox.net/virtualisation/installer-docker-sous-windows

Divers - Todo

Docker pour utiliser Mediawiki

Source : hub.docker.com/r/synctree/mediawiki/

Bibliographie

Ok.png https://www.docker.com/docker-community
Ok.png Rejoindre Slack : https://blog.docker.com
Ok.png Le forum officiel pour Docker : https://forums.docker.com
Ok.png StackOverFlow docker : https://stackoverflow.com/search?tab=newest&q=docker
Ok-ko.png Rejoindre Slack : https://blog.docker.com/2016/11/introducing-docker-community-directory-docker-community-slack/
Ok.png Hub Docker pour Ubuntu : http://hub.docker.com/_/ubuntu/
Ok.png Installer Docker sur GNU/Linux : https://memo-linux.com/installer-docker-sur-gnulinux/
Ok.png Installer Docker sur Debian 8 : https://www.it-connect.fr/debuter-avec-docker-et-les-containers-sous-debian-8
Ok.png Docker : comment ça marche ? https://blog.lmilcent.com/2016/03/25/docker-comment-ca-marche/
Ok-ko.png Astuces Nginx Docker 2015 : https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/
Ok-ko.png Why you don't need to run SSHd in your Docker containers : https://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/
Ok-ko.png Utiliser et installer Docker Cloud Agent : https://docs.docker.com/docker-cloud/infrastructure/byoh/
Ok-ko.png October 22, 2014 - Deploying NGINX and NGINX Plus with Docker : https://www.nginx.com/blog/deploying-nginx-nginx-plus-docker/
Ok-ko.png Docker et la sécurité : https://www.developpez.net/forums/d1790503/systemes/virtualisation/docker/tutoriel-video-quoi-neuf-docker-explique-securiser-conteneurs/#post9852738
Ok-ko.png Docker Security Scanning : https://www.developpez.com/actu/98661/Docker-devoile-Docker-Security-Scanning-son-outil-de-scan-de-vulnerabilites-au-sein-des-containers-Docker/
Ok-ko.png Nginx reverse proxy server Docker : http://littlebigextra.com/install-nginx-reverse-proxy-server-docker/
Ok-ko.png Lire la documentation officielle de Docker : https://docs.docker.com

NAVIGATION

COMPRENDRE LA BLOCKCHAIN PAR LA PRATIQUE

Obtenir gratuitement de la cryptomonnaie sur internet : https://www.visionduweb.eu/forum/bitcoin/1597-gagner-des-bitcoins-miner-des-bitcoins

PARTICIPER ET PARTAGER

Vous êtes sur le HackerSpace de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
Pourquoi utiliser GNU/Linux ? Y'a moins bien, mais, c'est beaucoup plus cher.
GNU/Linux, hackerspace, opensource, logiciels libres et transition écologique.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Les informations présentes sur cette page sont issues d'une recherche personnelle.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Pour écrire en Markdown : Éditeur - Générateur de tableau 1 - Générateur de tableau 2.
Vous pouvez partager les articles du wiki avec l'ensemble de la communauté des internautes.
Les recherches sur la sécurité servent à administrer et protéger votre système informatique.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

SOUTENIR VISIONDUWEB

Soutenir Vision du web avec des Bitcoins : 33ZsupGQr1rUmwj62HadcZ55hsGJajD9wN
Soutenir Vision du web avec des Bitcoins Cash : 15q5xAVFGpMbqgKsr8uhXymTv7kLfke7hq
Soutenir Vision du web avec des Bitcoins Gold : GNcVseSdiEGRzKYwZWeCbGGg1sZ6Nax172
Soutenir Vision du web avec des Bitcore (BTX) : 1Ks9FDF4FVauAHBCpBFKySiSmD8LaQhqDH
Soutenir Vision du web avec des Blackcoins : BKYBEhQGm9ExrYoWzbvmHA491sK2ArxFM6
Soutenir Vision du web avec des Bytecoins : 241LTEY5L3CSTN2afYf97obxGp4ahUYnq5jDwx5b15NQDothce8fpUeKA32X5SrJuDPBgXTsSmQRoAbCzcDvM2d2Pe9w6AY
Soutenir Vision du web avec des Clams : xMF9u1evuiN2zzEjg2KhgeYPcCLU84Ki5T
Soutenir Vision du web avec des Dash : Xd4vJFnWy27be8cLGSiXVYzP6nKFbdHATU
Soutenir Vision du web avec des Monero : 469EK3yr8JbNe3Gf1rXHD81zcHT7o1hTsDxqvWtxunnaTDLVNiXQ2NyWbwaVe4vUMveKAzAiA4j8xgUi29TpKXpm413rpYt
Soutenir Vision du web avec des Dogecoins : A64jhqCgsUyrUCPte6fV3BcG2Y7daH13Ym
Soutenir Vision du web avec des Ethereum : 0x0E4D6B7A1F88A56A1A66bf408c72FAE3d104D632
Soutenir Vision du web avec des Ethereum Classique : 0x633d83a4ab31e63d76d01edb660ecca4498ef8fa
Soutenir Vision du web avec des Litecoins : 3LKigW6TCS5MvXrZFGh8VMEtZf6MtE86iz
Soutenir Vision du web avec des Potcoins : PUYvjeJ3n2frypgD5yd95yNnwoztnZL5P3
Soutenir Vision du web avec des Solarcoins : 8aYbMcAL68U8f3c3o5pEKUKeWxx48gU1eq
Soutenir Vision du web avec des Zcash : t1Tkiv7nTt9Gwwui9ifsBdp37dTnRG7oYHp