Pré-requis :
- Linux en version 64bits
1 – modification des dépôts
$ sudo vim /etc/apt/sources.list.d/docker.list
ajout de la ligne : deb http://apt.dockerproject.org/repo debian-jessie main
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
2 – installation de docker
$ sudo apt-get update && apt-get upgrade $ sudo apt-get install docker-engine
On vérifie que docker fonctionne
$ sudo docker run hello-world 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. 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 Hub account: https://hub.docker.com For more examples and ideas, visit: https://docs.docker.com/userguide/
3 – Rattachement de l’utilisateur courant au groupe docker.
Par défaut, docker communique via un socket Unix et non pas TCP/IP
$ ls -l /var/run/docker.sock srw-rw---- 1 root docker 0 déc. 28 11:10 /var/run/docker.sock
Seuls root et les membres du groupe docker peuvent donc utiliser ce socket.
Pour que l’utilisateur courant puisse utiliser docker sans passer par sudo :
$ sudo adduser utilisateur docker
Fermer la session et réouvrir.
4 – Recherche des images
Là encore, deux méthodes : une par une à la main (privilégiée en premier pour comprendre le fonctionnement de Docker) ou avec docker-compose (voir plus loin… ou plus tard)
Docker crée des containers qui sont lancés à partir d’images.
On cherche les images à récupérer pour mettre en place notre wordpress
- soit sur le concentrateur (hub) d’images de docker : Docker Hub
- soit en ligne de commande :
$ docker search wordpress
1 image officielle (maintenue par Docker)
$ docker search mysql/
2 images officielles : mysql et mariadb
$ docker search phpmyadmin
pas d’image officielle : choix de phpmyadmin/phpmyadmin
5 – Installation du container base de données (MariaDB)
$ docker pull mariadb:latest ....
Afficher la liste des images en local (pour vérifier la présence de mariadb) :
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mariadb latest 7ea699452bc9 6 days ago 304.3 MB hello-world latest 0a6ba66e537a 10 weeks ago 960 B
Lancer un container db à partir de cette image :
$ docker run -e MYSQL_ROOT_PASSWORD=password --name db -d mariadb 33a2454e8386a94a1bad3841f854c84f92dbab7b4992c0155091b147a72b0069
L’utilisateur par défaut est « root » et le mot de passe celui dans la commande ci-dessus
Vérifier que le conteneur est lancé :
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 33a2454e8386 mariadb "/docker-entrypoint.s" 2 minutes ago Up 2 minutes 3306/tcp db
Voir au passage que la base de données écoute sur le port 3306
Se connecter à la base de données :
- récupérer l’IP du container de la base de données (db)
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' db 172.17.0.2
- installer le client mariadb en local si pas fait
$ sudo apt-get update $ sudo apt-get install mariadb-client-10.0
- se connecter à la base :
$ mysql -h 172.17.0.2 -uroot -ppassword Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 10.0.23-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
6 – installation du container WordPress
$ docker pull wordpress:latest ...
Vérification :
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mariadb latest 7ea699452bc9 6 days ago 304.3 MB wordpress latest 954d040f616f 11 days ago 516 MB hello-world latest 0a6ba66e537a 10 weeks ago 960 B
Création et lancement du container WordPress (nommé docker_WP et lié à la base dans le container db) et récupération de l’IP
$ docker run --name docker_WP --link db:mysql -d wordpress a31d4de54136d66aafa93c39591a5a495562254e88b90e341c0a7f05e2a61944 $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' docker_WP 172.17.0.3
En tapant cette IP (172.17.0.3) dans un navigateur, on accède au WordPress dans un container Docker.
7 – Quelques commandes supplémentaires utiles
Démarrer ou éteindre un container :
$ docker start docker_WP $ docker stop docker_WP
Supprimer un container
$ docker rm docker_WP
Effacer une image
$ docker rmi wordpress