https://containers.goffinet.org/
https://www.linkedin.com/feed/update/urn:li:activity:7075800181954203648?utm_source=share&utm_medium=member_android
Composerize ⇒ transform docker command to compose file
docker compose file generator (8gwifi.org)
docker images ou docker image ls ⇒ pour afficher les images
docker pull XXX ⇒ pour télécharger la dernière version de l’image XXX
docker pull XXX:tag ⇒ pour avoir la version spécifique tag
docker run ID_IMAGE ⇒ exécuter une image spécifique , cela conduit à créer un conteneur qui est l’instance d’une image en exécution
docker ps ⇒ pour afficher les conteneurs en exécution
docker ps -a ⇒ pour afficher les conteneurs dans tout les statuts
docker run -p 8080:80 d203 ⇒ (-p ou -publish) rediriger les requêtes du port 8080 en externe vers le port 80 du docker
Docker start XXXX ⇒ pour exécuter un conteneur stoppé (déjà créé)
Docker stop XXXX ⇒ stopper un conteneur en exécution
docker run -p 8080:80 —name mvcapp d203 ⇒ l’option —name permet de créer un conteneur avec un alias
docker create -p 8080:80 —name mvcapp2 d203 ⇒ pour créer un conteneur sans l’exécuter
docker run -d -p 8080:80 —name mvcapp2 d203 ⇒ l’option -d ou —detach permet d’exécuter le conteneur en background
docker run -p 5000:5000 -p 5001:5001 -t frontend ⇒ l’option -t permet de garder le terminal en écoute, ce qui pourra permettre de couper le serveur avec Ctrl+C
Docker rmi [image] ⇒ pour supprimer une image
Une image docker capture le système de fichier privé dans lequel va s’éxécuter le conteneur, on a créé une image contenant juste ce dont notre application a besoin pour s’exécuter
Mettre en place un dockerfile :
FROM [image] ⇒ permet de spécifier l’image de laquelle on abesoi pour créer notre image
WORKDIR [chemin] ⇒ pour spécifier que toutes les actions suivantes seront faites depuis le dossier spécifié sur le système de fichier de l’image et non de l’hôte
COPY [chemin1] [chemin2] ⇒ copier les fichiers du chemin1(système de fichiers hôte) vers le chemin2 du système de fichier image
RUN [commande] ⇒ exécute une commande dans le système de fichiers de l’image
CMD [commande] ⇒ exécuter une commande dans le conteneur après sa création
dotnet watch run ⇒ le paramètre watch écoute tous les changements sur les fichiers sources et recompile l’application
docker run -p:5000:5000 -p:5001:5001 -v $(pwd)/src:/app/src -t frontend ⇒ l’option -v crée un volume partagé entre le dossier local src et le dossier src du conteneur
Pour stopper tous les conteneurs en exécution
docker container stop $(docker container ls -aq)
docker run -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=Password_123’ -e ‘MSSQL_PID=Express’ -p 1433:1433 —name sqlserver mcr.microsoft.com/mssql/server
⇒ l’option -e permet de spécifier un argument
ACCEPT_EULA=Y: Accept the end-user license agreement.
• SA_PASSWORD=: Specify the password for SA user that must be at least eight characters including uppercase letters, lowercase letters, base-10 digits, and/or non-alphanumeric symbols.
• MSSQL_PID=: Specify which edition we want to use; the default value is the Developer edition
Pour utiliser le serveur docker sql installé, on utilise l’option —link
⇒ docker run -p:5000:5000 -p:5001:5001 -v $(pwd)/src:/app/src -t —link sqlserver --name frontend frontend
docker network create myapp-network ⇒ créer un réseau “myapp-network” pour y ajouter plusieurs conteneurs
docker exec -it frontend bash ⇒ pour se connecter à la ligne de commande d’un conteneur en exécution
Pour les scripts écrits depuis notepad pour docker , il faut passer le caractère de fin de ligne de CR LF(windows) ⇒ LF(unix) Pour faciliter le setup de plusieurs images, on peut utiliser l’outil docker-compose:
Pour cela, on crée un fichier xxxxxxx.yaml ou on setup tous les conteneurs dépendant pour le builddock puis docker-compose up
Pour re-starter toute la stack, on ré-exécute docker-compose up
Si on a pas besoin du mode intéractif ⇒ docker-compose start
If you want to delete the created containers (not the images), you can use the command ⇒ docker-compose down
docker build -t frontend:v1 -f Prod.Dockerfile .
We have tagged our image with the name frontend:v1 to avoid applying the latest version. Moreover, our Dockerfile has a nonstandard name, so we need to specify the -f parameter with the correct Dockerfile name. The result is the following.
dotnet ef migrations script --idempotent --output "script.sql" pour générer un script idempotent (qui peut être exécuté à tout moment)
docker exec -it myapp_sqlserver_1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Password_123' -Q 'CREATE DATABASE [myapp]'
⇒ pour créer la bd myapp en se connectant à la ligne de commande sqlcmd du serveur sql
docker cp script.sql myapp_sqlserver_1:/script.sql ⇒ copier le fichier script.sql vers le conteneur myapp_sqlserver_1
docker exec -it myapp_sqlserver_1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Password_123' -d myapp -i script.sql
⇒ To execute the script, you can use the sqlcmd tool with the option -d to indicate the database (myapp in our case), and the script name with the parameter -i, as follows
The base template of ASP.NET Core configures only the development, staging, or production environments, but you can add all the stages you want. This value is stored in the environment variable named ASPNETCORE_ENVIRONMENT
The database connection string is particularly interesting because it contains information that you probably would like to be able to change. You can make it configurable with the creation of an environment variable that contains the connection string value. We need to add the following row in Dockerfile and Prod.Dockerfile.

Know container ip :
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ansible-test
Force rebuild image :
docker compose up -d --force-recreate --build
In addition to distributed images via the registry service, there are options to dump images
as a TAR archive, and import them back into the local repository:
docker commit [CONTAINER]: Commits the changes of the container layer into
a new image
docker save —output [filename] IMAGE1 IMAGE2 …: Saves one or
more images to a TAR archive
docker load -i [filename]: Loads a tarball image into the local
repository
docker export —output [filename] [CONTAINER]: Exports a container’s
filesystem as a TAR archive
docker import —output [filename] IMAGE1 IMAGE2: Imports a
filesystem tarball