Docker/Problèmes connus
Accéder aux logs.
Par exemple si un conteneur ne se lance pas ou se relance toutes les secondes, un motif plus précis qu'en console peut se trouver dans les logs.
Pour le démon :
 tail /var/log/docker.log 
Pour les conteneurs.
 docker compose logs
Ces deux commandes acceptent l'argument "-f" pour les afficher en temps réel.
Pour un seul conteneur.
docker compose logs nom_du_conteneur
ou :
docker logs nom_du_conteneur
Définir les droits des fichiers partagés avec le conteneur.
Si le conteneur est amené à modifier les fichiers du volume, par défaut il a les droits root de la machine hôte.
Pour éviter cela, on peut faire un codice_1 dans Dockerfile, ou utiliser codice_2 (si le compte utilisé par la machine hôte est local).
Récupérer l'IP d'un conteneur.
docker inspect -f " nom_du_conteneur
docker inspect --format=" nom_du_conteneur # où "apps" est le nom du réseau
Récupérer la version de l'image d'un conteneur.
 docker image inspect --format " "nom_du_conteneur"
Réinitialiser les conteneurs à zéro.
Linux :
docker rm -f $(docker ps -a -q); docker rmi -f $(docker images -q); docker network rm $(docker network ls -q)
Windows :
docker rm -f $(docker ps -a -q); docker rmi -f $(docker images -q); docker network rm $(docker network ls -q)
La partie "network" peut être exécutée indépendamment, par exemple en cas de message "ERROR: Pool overlaps with other one on this address space".
Messages d'erreur.
Sous Windows.
/usr/bin/env: 'php\r': No such file or directory.
Utiliser "winpty". Ex :
 docker exec -it php7.3-fpm bash
Sinon :
 docker exec -it <container> bash
 cd bin
 tr -d '\015' <console >console.new
 mv console console.old
 mv console.new console
Certains conteneurs ne peuvent pas être lancés (timeout).
Vérifier que le partage Windows a bien été fait : clic droit, Settings, Resources, File Sharing, C: (puis relancer Docker Desktop).
Le partage Windows ne fonctionne pas.
Si ça n'a jamais fonctionné : ajouter son compte dans le groupe "docker-users".
C'est peut-être lié à la plage d'IP de Docker, remettre celle par défaut.
Si ça marchait sur Windows 10 pro dans un et que ça ne fonctionne plus en dehors de l'AD ou en VPN, c'est un bug avec Docker Desktop 2.1.0.5 qui semble résolu dans la 2.1.6.1. En effet, seul un admin de l'AD peut autoriser le partage des volumes, et le port 445 doit être ouvert.
Pour tester si ça marche :
 docker run -v c:/Users:/data alpine ls data
500: {"Message":"Unhandled exception: Drive has not been shared"}'.
Dans Docker Desktop, partager le volume concerné.
"502 Bad Gateway" dans Nginx et "Bus error" dans les commandes PHP.
Redémarrer Docker Desktop.
Sinon c'est un processus PHP qui gonfle à outrance à cause du code.
ERROR: failed to create new listening socket: socket(): Address family not supported by protocol (97).
Relancer Docker Desktop.
Error: mounting wslCLIDest: stat /mnt/host/c/Program Files/Docker/Docker/resources/wsl/docker-wsl-cli.iso: no such file or directory.
Décocher "Use the WSL 2 based engine" dans les options et relancer Docker Desktop.
fatal: not a git repository (or any parent up to mount point /var) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Redémarrer Docker Desktop.
Error response from daemon: Mount denied: The source path "mon_dossier;C" doesn't exist and is not known to Docker.
Sous Git Bash dans Windows, il faut préfixer le chemin local par "/". Ex : codice_3
Invalid mode /var/www.
Le chemin d'accès dans docker-compose.yml n'est pas compris. Cela se produit pas exemple quand on met des antislashs à la place des slashs.
/bin/sh: no such file or directory.
Forcer la reconstruction :
 DOCKER_BUILDKIT=0 docker compose build
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
 sudo usermod -aG docker $USER
Si ça ne marche pas, relancer docker en administrateur.
Cannot start service xxx: Address already in use.
Deux processus utilisent le même port.
Cannot start service xxx :driver failed programming external connectivity on endpoint.
Impossible de lancer un conteneur sur Windows :
 docker run --rm -v c:/Users:/data alpine ls /data
Couldn't connect to Docker daemon at http+docker://localhost - is it running?
 /etc/init.d/docker start
Si le démon ne se lance pas, upgrader l'OS et redémarrer. Sinon, réinstaller Docker.
Could not resolve host: xxx (pas de DNS).
Revoir la plage d'IP définie dans le paragraphe "networks" de docker-compose.yml.
Device or resource busy, Cette action ne peut pas être réalisée car le fichier est ouvert dans com.docker.backend.exe.
C'est un bug connu (sur Linux et Windows) quand installe certains paquets. On ne peut supprimer le fichier qu'en fermant tout Docker (sous Windows en tout cas, il ne suffit pas de le redémarrer).
Cela se produit (en cas de réécriture d'historique ?), repartir d'une branche propre avant de relancer "composer install".
Sinon, le lancer dans une VM et récupérer le dossier vendor.
Error response from daemon: Get https://xxx: no basic auth credentials.
Sur certains dépôts privés, pour faire un codice_6 il faut préalablement se loguer. Ex :
 docker login -u mon_utilisateur -p mon_mdp mon_url
Invalid interpolation format for "environment" option in service "documents": "^https?://.*?$".
Échapper le $ interprété dans docker-compose.yml. Par exemple, remplacer :
 CORS_ALLOW_ORIGIN: "^https?://.*?$"
par :
 CORS_ALLOW_ORIGIN: "^https?://.*?$$"
standard_init_linux.go:211: exec user process caused "no such file or directory".
Cela peut se produire quand des conteneurs testés sur Linux sont utilisés sur Windows.
Il faut changer les retours chariots du fichier appelé par "ENTRYPOINT" dans le Dockerfile, de CRLF (Windows) vers LF (Unix). Ex : codice_7
Puis reconstruire et relancer le conteneur.
Autres solutions.
On peut aussi lancer "dos2unix" automatiquement depuis le dockerfile sur une copie de l'exéutable.
S'il s'agit d'un dépôt Git, on peut aussi le sauvegarder autrement depuis Linux :
container_linux.go:349: starting container process caused "exec: \"custom-docker-php-entrypoint\": executable file not found in $PATH": unknown.
Cela peut se produire quand des conteneurs testés sur Windows sont utilisés sur Linux.
Il faut changer leur donner les droits d'exécution (codice_10).
Puis reconstruire et relancer le conteneur.

Docker/Version imprimable
Web form application
= Web form application =
Une Web form application est une application web où tout tient sur une page. 
L'éditeur vous permet d'ajouter les contrôles visuellement de la même façon que lorsque vous créez une application graphique. 
Mais attention ! Il y a des différences ! Votre site internet génère du contenu en fonction des requêtes reçues. En testant, vous constaterez que vous ne pouvez pas réutiliser un code provenant d'une application graphique tel quel. 
Bien entendu, le nom des contrôles change un peu mais surtout la portée des variables se trouve modifiée car elle est valide que le temps d'une requête. 
Pour bien débuter avec les applications web, il faut connaître un peu comment fonctionne le protocole HTTP, comment fonctionne un serveur, comment fonctionne un navigateur (le client), ce qu'est un cookie, une session. 
Pour bien faire, il faudrait connaître un peu le HTML qui est utilisé pour spécifier le contenu et le CSS qui est utilisé pour la mise en forme (pour rendre votre page toute jolie). 
Vous n'avez pas besoin de toutes ces notions pour suivre le tutoriel.