This repository has been archived on 2020-11-27. You can view files and clone it, but cannot push or open issues or pull requests.
readme/docker.md
2019-05-15 17:35:42 +02:00

2.4 KiB

docker

concept

  • image: template en lecture seul pouvant créer un container
  • conteneur:instance d'une image

command

  • telecharger une image: docker pull debian:$tag
  • crer et lancer un container en tty docker run -it bash
  • arreter container: docker stop
  • démarrer containeur: docker start
  • lister tous les conteneur docker ps -a
  • delete conteneur: `docker rm 2cdc
  • run a commad in container: docker exec
  • créer et lancer un conteneur docker run -d --name node-app -p 3000:3000 -v $(pwd):/app node:0.12.4 node /app/server.js
    • -d lance en tant que daemon
    • --name permet de nommer le conteneur
    • -p associe le port au port de l'hote (1er port pour l'hote et second pour le conteneur)
    • -v $(pwd):/app : cette option permet de partager un dossier avec votre conteneur, ici, nous partageons le dossier courant (où se trouve notre fichier server.js) avec le dossier /app dans le conteneur (attention si vous êtes sur Mac ou Windows uniquement votre 'home' est partagé).
    • node:0.12.4 : l'image Docker que vous voulez utiliser.
    • node /app/server.js : la commande à exécuter dans le conteneur.

dockerfile

#FROM permet de définir notre image de base, vous pouvez l'utiliser seulement une fois dans un Dockerfile.
FROM debian 


#RUN permet d'exécuter une commande à l'intérieur de votre image comme si vous étiez devant un shell unix.
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*

RUN curl -LO "https://nodejs.org/dist/v0.12.5/node-v0.12.5-linux-x64.tar.gz" \
&& tar -xzf node-v0.12.5-linux-x64.tar.gz -C /usr/local --strip-components=1 \
&& rm node-v0.12.5-linux-x64.tar.gz
#ADD permet d'ajouter des fichiers locaux ou distants à l'intérieur de votre image, il est le plus souvent utilisé pour importer les sources de votre projet ou des fichiers de configuration.
ADD package.json /app/
#WORKDIR permet de changer le répertoire courant de votre image, toutes les commandes qui suivront seront exécutées à partir de ce répertoire.
WORKDIR /app
RUN npm install
#ajoute le répertoire a projet a l'image
ADD . /app/

#EXPOSE et VOLUME permettent respectivement d'indiquer quel port et quel dossier nous souhaitons partager.
EXPOSE 3000

VOLUME /app/log

#instruction qui doit s'exécuter au lancement du conteneur
CMD node server.js 

le .dockerignore permet comme un .gitignore de ne pas inclure certain fichiers dans l'image Docker,