Docker
Commandes utiles :
Afficher les conteneurs actifs :
docker ps
Killer un conteneur :
docker stop <ID>
Ex :
docker stop d61d169912c8
Faire de la place sur le system d'exploitation :
docker system prune
Afficher l'ensemble des images présentes sur le système :
docker images -a
Entrer dans un conteneur :
docker exec --user:root -it mondocker bash
Stop all containers :
docker stop $(docker ps -a -q)
Créer son propre conteneur :
Créer son propre dockerfile :
Fichier = Dockerfile
FROM debian:9
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_10.x | bash \
&& apt-get install nodejs -yq \
&& apt-get clean -y
ADD . /app/
WORKDIR /app
RUN npm install
EXPOSE 2368
VOLUME /app/logs
CMD npm run start
Création de l'image personnalisée :
docker build -t ocr-docker-build .
L'image a bien été créée !
Lancement du conteneur personnalisé :
docker run -d -p 2368:2368 ocr-docker-build
Créer un fichier docker-compose.yml :
Pour GHOST :
version: '3'
services:
mysql:
image: mysql:latest
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: monPassword
ghost:
depends_on:
- mysql
image: ghost
ports:
- "80:2368"
restart: always
environment:
NODE_ENV: production
MYSQL_ROOT_PASSWORD: monPassword
url: http://localhost:80
volumes:
db_data: {}
Pour Wordpress :
version: '3'
services:
db:
image: mysql:latest
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
Lancement du stack :
docker-compose up -d // ou docker-compose up
Résultat :
Si je tente d'accéder à http://localhost:80 :
Exemples conteneurs :
Hello-World :
docker run hello-world
2048 :
docker run -d -p 8080:80 alexwhen/docker-2048
Google cloud SDK
docker run -ti --name gcloud-config google/cloud-sdk gcloud auth login
Dockerfile qui créer un Docker serv web qui affiche son nom (utile pour les tests de load balancing par exemple) :
# Docker Who display him name
#
# Created by : Néhémie Barkia
# Last Update : 26/12/2023
#
# PRÉREQUITS
FROM debian:latest
RUN apt-get update -y
RUN apt-get install apache2 php php-pdo php-mbstring php-mysql php-json php-common git -y
RUN apt-get clean
# INSTALLATION WEB
RUN rm /var/www/html/* -r
# Insertion des informations de connexion dans les fichiers de Fix
RUN echo "<?php" >> /var/www/html/index.php
RUN echo "\$h = getenv('HOSTNAME');" >> /var/www/html/index.php
RUN echo "echo \$h" >> /var/www/html/index.php
RUN echo "?>" >> /var/www/html/index.php
#
WORKDIR /app
VOLUME /app/logs
EXPOSE 80
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
docker build -t web_name .
docker run -d -p 8080:80 --name=srv1 web_name
docker run -d -p 8081:80 --name=srv2 web_name
docker run -d -p 8082:80 --name=srv3 web_name
