\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{dim. mars 13 19:29:25 CET 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={Dockerfile},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Automatiser la création d'image Docker},
CreationDate={D:20160313192925},
ModDate={D:20160313192925},
Keywords={docker;containers;lxc}
}}
\begin{document}
 
\begin{center}
{\Huge Dockerfile }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Automatiser la création d'image Docker}
 
\vspace{10mm}
 
\hspace{1mm}  Le fichier Dockerfile est un fichier de configuration qui automatise les étapes de création d'une image Docker. C'est similaire à un Makefile. Docker lit les instructions du fichier Dockerfile et automatise les étapes pour créer l'image. Pour construire une image, créer un fichier appelé Dockerfile. Utiliser ensuite docker build en utilisant le chemin du répertoire qui contient le Dockerfile comme argument.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Format }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} FROM image]{}
\item[\hspace{1mm} FROM image:tag]{}
\item[\hspace{1mm} FROM image@digest]{Le jeu d'instructions FROM définis l'image de base pour les instructions suivantes. Un Dockerfile valide doit avoir l'instruction FROM en premier.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} -]{FROM doit être la première instruction dans le Dockerfile}
\item[\hspace{6mm} -]{FROM peut apparaître plusieurs fois dans un Dockerfile}
\item[\hspace{6mm} -]{Si aucun tag n'est donné, Docker applique le tag latest, s'il n'existe pas, retourne une erreur}
\item[\hspace{6mm} -]{Si aucun hash n'est donné, Docker applique le tag latest, s'il n'existe pas, retourne une erreur}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} MAINTAINER]{Définis l'auteur pour les images générées. Utile pour fournir une URL ou un email}
\item[\hspace{1mm} RUN <command>]{}
\item[\hspace{1mm} RUN \texttt{[}"executable", "param1", "param2"\texttt{]}]{Éxécuter des commandes dans une nouvelle couche en haut de l'image courante et retourne le résultat.}
\item[\hspace{1mm} CMD \texttt{[}"executable", "param1", "param2"\texttt{]}`]{}
\item[\hspace{1mm} CMD \texttt{[}"param1", "param2"\texttt{]}`]{}
\item[\hspace{1mm} CMD command param1 param2]{Il devrait y avoir seulement un CMD dans un Dockerfile. Fournis des défauts pour un conteneur. Ces défauts peuvent inclure un exécutable. Si omis, un ENTRYPOINT doit être spécifié.}
\item[\hspace{1mm} LABEL <key>=<value> \texttt{[}<key>=<value> ...\texttt{]}]{}
\item[\hspace{1mm} LABEL <key>\texttt{[} <value>\texttt{]}]{Ajoute des métadonnées à une image. Un label est une paire de clé/valeur.}
\item[\hspace{1mm} EXPOSE <port> \texttt{[}<port>...\texttt{]}]{Informe Docker que le conteneur écoute sur des ports réseaux spécifiés. Docker utilise cette information pour interconnecter les conteneurs en utilisant des liens et pour définir les redirections de port dans le système hôte.}
\item[\hspace{1mm} ENV <key> <value>]{Définis des variables d'environnement}
\item[\hspace{1mm} ADD <src> <dest>]{}
\item[\hspace{1mm} ADD \texttt{[}"<src>",... "<dest>"\texttt{]}]{Permet de copier des fichiers et répertoires}
\item[\hspace{1mm} COPY <src> <dest>]{}
\item[\hspace{1mm} COPY \texttt{[}"<src>",... "<dest>"\texttt{]}]{Permet de copier des fichiers dans le système de fichier du conteneur.}
\item[\hspace{1mm} ENTRYPOINT \texttt{[}"executable", "param1", "param2"\texttt{]}`]{}
\item[\hspace{1mm} ENTRYPOINT command param1 param2]{Permet de configurer un conteneur qui peut être lancé comme un exécutable.}
\item[\hspace{1mm} VOLUME \texttt{[}"/data"\texttt{]}]{Créé un point de montage avec le nom spécifié et le marque comme volume monté en interne.}
\item[\hspace{1mm} USER daemon]{Définis le username ou UID à utiliser pour les commandes suivantes.}
\item[\hspace{1mm} WORKDIR /path/to/workdir]{Définis le répertoire courant de travail.}
\item[\hspace{1mm} ARG <name>\texttt{[}=<default value>\texttt{]}]{Définis une variable que les utilisateurs peuvent passer au builder avec docker build --build-arg.}
\item[\hspace{1mm} ONBUILD \texttt{[}INSTRUCTION\texttt{]}]{Ajoute une instruction déclencheur à une image. Le trigger est exécuté à la fin, quand l'image est utilisée comme base pour un autre build. Docker exécute le trigger dans le contexte du flux de build, comme s'il existait immédiatement après l'instruction FROM.}
\end{description}
\end{flushleft}
\end{document}
