Vous êtes ici

Premiers pas avec Docker - 2

dockerArticle précédent

Créer une image Apache

Ma première cible va être de créer une image Apache que je puisse faire tourner sur le Mac, puis transférer sur le serveur sur Internet, et faire tourner là-bas. Allons-y !

D'abord, je tire une image Ubuntu 14.04 :

docker pull ubuntu:14.04

Le transfert fait plus de 200 Mo.

Ensuite :

  • lancer l'image : docker run -t -i ubuntu:14.04 /bin/bash
  • faire une mise à jour d'Ubuntu et installer un petit éditeur de texte :
apt-get update
apt-get upgrade
apt-get install nano
  • installer Apache 2:
apt-get install apache2
apt-get install php5 libapache2-mod-php5
apt-get install php5-mysql

Un message d'erreur est affiché par les deux premières commandes :

invoke-rc.d: policy-rc.d denied execution of start.

Cette page donne une solution: éditer le contenu de /usr/sbin/policy-rc.d, pour remplacer exit 101 par exit 0.

  • démarrer Apache, s'il n'est pas déjà démarré (c'était mon cas, à cause des erreurs): service apache2 start
  • sortir du container: exit
  • figer une copie de ce container dans une nouvelle image :
docker commit -m="Added Apache2" -a="<author>" \
<imageId> <userid>/apache2:v1

<imageId> est l'identifiant affiché par l'invite du terminal, après que la commande docker run -t -i ubuntu:14.04 /bin/bash ait été exécutée. <userid> peut être l'identifiant utilisateur que vous avez déclaré sur Docker Hub, si vous l'avez fait, ou une autre chaîne.

Faire tourner l'image Apache sur la machine de développement

Maintenant, une façon de tester sur le Mac notre serveur Apache mis en container est d'utiliser la commande docker run pour démarrer un container basé sur notre image :

docker run -t -p 80:80 -i <userid>/apache2:v1 /bin/bash

L'option -p permet de préciser à quel port de la machine doit être assigné le port ouvert dans le container.

Puis, depuis l'intérieur du container :

service apache2 start

Récupérer l'adresse IP permettant de joindre le serveur web :

boot2docker ip

Et maintenant, en utilisant votre navigateur web préféré, visiter l'adresse IP précédente : vous obtenez la page web par défaut d'Apache.

Faire tourner l'image Apache sur le serveur

Maintenant, allons un niveau plus loin. Sur le serveur tout neuf, où je viens d'installer Ubuntu Serveur 14.04, j'installe Docker, comme décrit dans la documentation Docker.

Puis :

  • tirer l'image the Ubuntu:14.04
  • faire une mise à jour
  • sur la machine de développement, sauver l'image Docker :
docker save -o apache2 <userid>/apache2:v1
  • copier le fichier tar apache2 résultant sur le serveur
  • sur le serveur, importer l'image :
docker load -i apache2
  • puis la lancer, et démarrer le service Apache :
docker run -t -p 80:80 -i <userid>/apache2:v1 /bin/bash
service apache2 start

Et voilà !

Article suivant