Outils pour utilisateurs

Outils du site


sio:stage2:docker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

sio:stage2:docker [08/02/2016 16:41]
charly [Postgres run.sh]
sio:stage2:docker [18/09/2016 02:54]
Ligne 1: Ligne 1:
-====== Utilisation de docker ====== 
-===== Objectif ===== 
-L'objectif de cette documentation est d'apprendre à utiliser les commandes de base de docker ainsi que de créer à partir de celle-ci des images et d'instancier des conteneurs. 
  
-===== Présentation des commandes ===== 
-Il existe de nombreuse commande sur docker, le liste complète est disponible en utilisant //docker --help// nous allons ici présenter les plus importante pour débuter avec docker. \\ 
- 
-    attach    Entrer dans le conteneur via un shell conteneur 
-    build     Construire un image depuis un fichier Dockerfile 
-    commit    Créer une nouvelle image de l'évolution du conteneur 
-    cp        Copier des fichiers/dossiers entre l'hôte et le conteneur 
-    create    Créer un nouveau conteneur 
-    diff      Vérifier les changements sur le conteneur 
-    events    Obtenir un journal d’événements du service docker 
-    exec      Exécuter une commande dans le conteneur cible 
-    history   Voir l'historique d'une image 
-    images    Lister les images présente sur l'hôte 
-    logs      Voir les logs du conteneur 
-    port      Voir la liste des ports redirigés par le proxy docker sur le conteneur 
-    ps        Lister les conteneurs démarré (avec l'option -a tous les conteneurs) 
-    pull      Télécharger une image depuis un registre 
-    push      Envoyer une image sur un registre 
-    restart   Redémarrer un conteneur 
-    rm        Supprimer un ou plusieurs conteneurs 
-    rmi       Supprimer une ou plusieurs images 
-    run       Lancer une commande dans un nouveau conteneur (create + start)  
-    search    Rechercher une image dans le hub docker 
-    start     Démarrer un ou plusieurs conteneurs 
-    stats     Afficher les statistiques d'un ou plusieurs conteneurs 
-    stop      Arrêter un ou plusieurs conteneurs 
-    tag       Tager une image dans un registre 
-    top       Voir les processus en cours d’exécution dans le conteneur 
-    volume    Gérer les volumes docker 
-===== Docker build ===== 
-Avec les différentes commandes que nous avons vue précédemment nous pouvons créer des Dockerfile qui vont nous permettre de construire une image. 
-==== Apache 2 Dockerfile ==== 
-<code> 
-# On definit quel est l'image de base à utiliser 
-FROM cg44/debian:jessie 
-# Les personnes qui maintiennent cette image 
-MAINTAINER Laurent Souchet <hello@viper61.fr> 
-MAINTAINER Charly Beaupeux 
- 
-# Les varibles d'environnement 
-ENV APACHE_RUN_USER=www-data \ 
-    APACHE_RUN_GROUP=www-data \ 
-    APACHE_LOG_DIR=/var/log/apache2 \ 
-    APACHE_LOCK_DIR=/var/lock/apache2 \ 
-    APACHE_PID_FILE=/var/run/apache2.pid 
- 
-# Les différentes commandes pour installer apache ainsi que les modules nécessaire 
-RUN apt-get update -y \ 
-    && apt-get install -y --no-install-recommends apache2 apache2-mpm-worker apache2-mpm-event libapache2-mod-fcgid \ 
-    && a2dismod mpm_prefork \ 
-    && a2enmod ssl rewrite proxy proxy_fcgi actions alias env headers mime dir \ 
-# On supprime le cache apt pour alléger l'image 
-    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
- 
-# On indique à Docker les ports que le conteneur écoute 
-EXPOSE 80 443 
- 
-# Dossier de données que l'on rends pérenne 
-VOLUME ["/etc/apache2/sites-enabled", "/etc/apache2/ssl", "/var/log/apache2", "/var/www"] 
- 
-# La commande executer au demarrage du conteneur 
-ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] 
-</code> 
-==== PHP-fpm Dockerfile ==== 
-<code> 
-# On definit quel est l'image de base à utiliser 
-FROM cg44/debian:jessie 
-# Les personnes qui maintiennent cette image 
-MAINTAINER Laurent Souchet <hello@viper61.fr> 
-MAINTAINER Charly Beaupeux 
- 
-# Les varibles d'environnement 
-RUN apt-get update -y && \ 
-    apt-get install -y --no-install-recommends php5-fpm php5-curl php5-ldap php5-memcache php5-memcached \ 
-    php5-mssql php5-mysqlnd php5-pgsql php5-sqlite php5-xdebug php5-gd && \ 
-    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
- 
-# Les différentes commandes pour installer php5 ainsi que les modification à effectuer dans le fichier de configuration 
-RUN sed -i "s/;date.timezone =.*/date.timezone = Europe\/Paris/" /etc/php5/fpm/php.ini && \ 
-    sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=1/" /etc/php5/fpm/php.ini && \ 
-    sed -i "s/display_errors = Off/display_errors = stderr/" /etc/php5/fpm/php.ini && \ 
-    sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 1G/" /etc/php5/fpm/php.ini && \ 
-    sed -i "s/;opcache.enable=0/opcache.enable=0/" /etc/php5/fpm/php.ini && \ 
-    sed -i "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php5/fpm/php-fpm.conf && \ 
-    sed -i "/^listen = /clisten = 9000" /etc/php5/fpm/pool.d/www.conf && \ 
-    sed -i "/^listen.allowed_clients/c;listen.allowed_clients =" /etc/php5/fpm/pool.d/www.conf && \ 
-    sed -i "/^;catch_workers_output/ccatch_workers_output = yes" /etc/php5/fpm/pool.d/www.conf 
- 
-# On indique à Docker les ports que le conteneur écoute 
-EXPOSE 9000 
- 
-# Dossier de données que l'on rends pérenne 
-VOLUME ["/var/www"] 
- 
-# La commande executer au demarrage du conteneur 
-ENTRYPOINT ["/usr/sbin/php5-fpm", "-F"] 
-</code> 
-==== Postgres Dockerfile ==== 
-<code> 
-# On definit quel est l'image de base à utiliser 
-FROM cg44/debian:jessie 
-# Les personnes qui maintiennent cette image 
-MAINTAINER Laurent Souchet <hello@viper61.fr> 
-MAINTAINER Charly Beaupeux 
- 
-# Les varibles d'environnement 
-ENV PG_MAJOR=9.4 
-ENV PG_VERSION=9.4.5-0+deb8u1 
-ENV PGDATA=/var/lib/postgresql/data 
-ENV PGDIR=/etc/postgresql/$PG_MAJOR/main 
-ENV DBUSER=unusual 
-ENV DBPWD=5uP3r?4s5w02D 
-ENV DBBASE=anydb 
-ENV PATH=/usr/lib/postgresql/$PG_MAJOR/bin:$PATH 
- 
-# Les différentes commandes pour installer postgres ainsi que les dossier nécessaire 
-RUN apt-get update -y \ 
-    && apt-get install -y --no-install-recommends postgresql-$PG_MAJOR=$PG_VERSION \ 
-    && mkdir -p /var/run/postgresql \ 
-    && chown -R postgres /var/run/postgresql \ 
-# On supprime le cache apt pour alléger l'image 
-    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
- 
-# On copie le script dans le conteneur 
-COPY init.sh / 
- 
-# On indique à Docker les ports que le conteneur écoute 
-EXPOSE 5432 
- 
-# Dossier de données que l'on rends pérenne 
-VOLUME ["/var/lib/postgresql/data"] 
- 
-# On change d'utilisateur 
-USER postgres 
- 
-# On change le dossier de travail 
-WORKDIR /var/lib/postgresql 
- 
-# La commande executer au demarrage du conteneur 
-ENTRYPOINT ["/init.sh"] 
-</code> 
- 
-===== Docker run ===== 
- 
-==== Apache 2 run.sh ==== 
-<code> 
-#!/bin/bash 
- 
-docker run -dti -p 80:80 -p 443:443 --link php --name apache -v /data/apache2/etc/apache2/sites-enabled/:/etc/apache2/sites-enabled/ -v /data/apache2/etc/apache2/ssl:/etc/apache2/ssl -v /data/apache2/var/log/apache2:/var/log/apache2 -v /data/apache2/var/www:/var/www -h apache debiandockerdev2:5000/cg44/apache2:latest 
-</code> 
-==== PHP-fpm run.sh ==== 
-<code> 
-#!/bin/bash 
- 
-docker run -dtiv /data/apache2/var/www:/var/www --link postgres --name php -h php debiandockerdev2:5000/cg44/php:latest 
-</code> 
-==== Postgres run.sh ==== 
-<code> 
-#!/bin/bash 
- 
-docker run -dtiv /data/postgres/var/lib/postgresql/data:/var/lib/postgresql/data --name postgres -h postgres debiandockerdev2:5000/cg44/postgres:latest 
-</code> 
- 
-Ainsi que le script d'initialisation 
-<code> 
-#!/bin/bash 
- 
-if [[ -z "$(ls -A "$PGDATA")" || "$1" = "master" || "$1" = "slave" ]] 
-then 
-  if [ -z "$(ls -A "$PGDATA")" ] 
-  then 
-    chmod 700 $PGDATA 
-    chown -R postgres $PGDATA 
-    initdb 
- 
-    sed -i "s,#listen_addresses = 'registry.cg44.fr',listen_addresses = '*',g" $PGDATA/postgresql.conf 
-    sed -i "s,#data_directory = 'ConfigDir',data_directory = '$PGDATA',g" $PGDATA/postgresql.conf 
-    sed -i "s,#hba_file = 'ConfigDir/pg_hba.conf',hba_file = '$PGDATA/pg_hba.conf',g" $PGDATA/postgresql.conf 
-    echo "host    all             all             172.17.0.0/16                md5" >> $PGDATA/pg_hba.conf 
- 
-    pg_ctl -D $PGDATA -o "-c listen_addresses=''" -w start 
- 
-    psql -U postgres << EOF 
-      create user $DBUSER createdb; 
-      alter user $DBUSER encrypted password '$DBPWD'; 
-      create database $DBBASE template template0 encoding 'unicode'; 
-      alter database $DBBASE owner to $DBUSER; 
-      grant all privileges on database $DBBASE to $DBUSER; 
-EOF 
- 
-    echo "L'utilisateur et la base de données ont bien été créer et sont préte !" 
-  fi 
- 
-  if [ "$1" = "master" ] 
-  then 
-    echo "master" 
-    if [ ! $(pgrep postgres) ] 
-    then 
-      pg_ctl -D $PGDATA -o "-c listen_addresses=''" -w start 
-    fi 
-    echo "création $REPUSER" 
-    psql -U postgres << EOF 
-      create user $REPUSER replication; 
-      alter user $REPUSER encrypted password '$REPPWD'; 
-EOF 
- 
-    sed -i "s,#wal_level = minimal,wal_level = hot_standby,g" $PGDATA/postgresql.conf 
-    sed -i "s,#max_wal_senders = 0,max_wal_senders = 1,g" $PGDATA/postgresql.conf 
- 
-  elif [ "$1" = "slave" ] 
-  then 
-    sed -i "s,#hot_standby = off,hot_standby = on,g" $PGDATA/postgresql.conf 
-    echo "standby_mode = 'on'" > $PGDATA/recovery.conf 
-    echo "primary_conninfo = 'host=$REPMASTERIP port=5432 user=$REPUSER password=$REPPWD'" >> $PGDATA/recovery.conf 
-  fi 
- 
-else 
-  postgres -D $PGDATA 
-fi 
-</code>  
sio/stage2/docker.txt · Dernière modification: 18/09/2016 02:54 (modification externe)