Concepts de Base

1. Exercice A

  • Utilisez une image Ubuntu pour créer un conteneur Docker.

  • Exécutez une commande dans le conteneur pour afficher le message "Hello, Docker".

1
docker run ubuntu echo "Hello, Docker"
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
ff65ddf9395b: Pull complete
Digest: sha256:99c35190e22d294cdace2783ac55effc69d32896daaa265f0bbedbcde4fbe3e5
Status: Downloaded newer image for ubuntu:latest
Hello, Docker

2. Exercice B

  • Créez un fichier Dockerfile contenant les instructions nécessaires pour construire une image Docker personnalisée.

  • L'image doit être basée sur Ubuntu et inclure un script Python qui affiche la date et l'heure actuelles au démarrage.

from datetime import datetime
now = datetime.now()
print("Date et heure actuelles :", now)
  • Construisez l'image à l'aide de la commande docker build et exécutez un conteneur basé sur cette image.

1
nano main.py
from datetime import datetime
now = datetime.now()
print("Date et heure actuelles :", now)
2
nano Dockerfile
FROM alpine
RUN apk update && apk add python3
COPY . /app
WORKDIR /app
CMD ["python3","main.py"]
3
docker image build -t exercice-b:v0.1 .
[+] Building 0.1s (9/9) FINISHED                                                                                                                                                                  docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                        0.0s
 => => transferring dockerfile: 134B                                                                                                                                                                        0.0s
 => [internal] load metadata for docker.io/library/alpine:latest                                                                                                                                            0.0s
 => [internal] load .dockerignore                                                                                                                                                                           0.0s
 => => transferring context: 2B                                                                                                                                                                             0.0s
 => [1/4] FROM docker.io/library/alpine:latest                                                                                                                                                              0.0s
 => [internal] load build context                                                                                                                                                                           0.0s
 => => transferring context: 160B                                                                                                                                                                           0.0s
 => CACHED [2/4] RUN apk update && apk add python3                                                                                                                                                          0.0s
 => [3/4] COPY . /app                                                                                                                                                                                       0.0s
 => [4/4] WORKDIR /app                                                                                                                                                                                      0.0s
 => exporting to image                                                                                                                                                                                      0.0s
 => => exporting layers                                                                                                                                                                                     0.0s
 => => writing image sha256:e4642afea15d72f269a711c273b531903dfb0f48e2591f4520e506bd4ff32f3d                                                                                                                0.0s
 => => naming to docker.io/library/exercice-b:v0.2  
4
docker container run exercice-b:v0.1
Date et heure actuelles : 2024-11-08 15:30:47.415451

3. Exercice C

  • Créez un fichier docker-compose.yml contenant les instructions pour exécuter deux conteneurs : un conteneur phpmyadmin et un conteneur MySQL.

  • Configurez le conteneur phpmyadmin pour qu'il soit accessible sur le port 80 de votre machine hôte.

  • Configurez le conteneur phpmyadmin avec un nom d'utilisateur et un mot de passe personnalisés.

  • Créez un base de données nommée db_exercice avec comme utilisateur pour l'administrer cpnv (mot de passe : secret)

  • Le mot de passe de l’utilisateur root du SGBD est password

  • Utilisez un volume pour stocker les bases de données de MySQL.

  • Exécutez les conteneurs à l'aide de la commande docker-compose up et vérifiez qu'ils fonctionnent correctement.

nano docker-compose.yml
services:
  db:
    image: mysql:5.7
    container_name: mysql_db
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: db_exercice
      MYSQL_USER: cpnv
      MYSQL_PASSWORD: secret

  phpmyadmin:
    image: phpmyadmin
    container_name: phpmyadmin
    depends_on:
      - db
    ports:
      - "80:80"
    restart: always
    environment:
      PMA_HOST: db
      PMA_PORT: 3306

volumes:
  db_data:
docker-compose up -d

Last updated