Mettez Docker dans Windows Home et exécutez un serveur Web simple avec Python

introduction

Je voulais étudier Docker, j'ai donc tout fait, de l'installation de Docker à l'exécution d'un simple serveur Web avec Python dans le conteneur Docker de l'environnement Windows 10 HOME (← important), je vais donc le résumer. Il peut y avoir des omissions dans la procédure, donc si quelque chose ne va pas, je vous serais reconnaissant de bien vouloir commenter.

Docker sur le système d'exploitation Windows

Tout d'abord, Docker fonctionne sur LINUX OS. Par conséquent, pour exécuter Docker sous Windows, configurez une machine virtuelle LINUX et exécutez le moteur Docker dessus. Ceci est commun à Windows 10 Professionnel et Windows 10 Famille. La figure ci-dessous. Lors de l'exécution de Dokcer sous Linux à gauche et Windows à droite.

image.png

(https://www.researchgate.net/figure/A-comparison-of-the-architecture-of-virtual-machines-and-Docker-software_fig4_299771559) "

Différences entre Windows 10 Pro et Home lors de l'utilisation de Docker

L'essentiel est que Windows 10 Pro utilise «Docker Desktop pour Windows» et Windows 10 Home utilise «Docker Toolbox». La raison de les utiliser correctement est que «Docker Desktop pour Windows» est censé utiliser Hyper-V comme hyperviseur dans la figure ci-dessus, mais Hyper-V ne peut pas être utilisé dans Windows 10 Famille. Par conséquent, dans Windows 10 Famille, installez "Docker Toolbox". "Docker Toolbox" utilise la "Virtual Box" d'Oracle comme hyperviseur. En résumé, c'est comme le montre la figure ci-dessous.

Windows 10 Pro Windows 10 Home
Hyper visière Hyper-V Boîte virtuelle (etc.)
Doker Docker Desktop for Windows Docker Toolbox

Étapes pour exécuter un serveur Web simple dans un conteneur Docker

Sur la base de ce qui précède, la procédure pour exécuter un serveur Web simple qui affiche la page suivante dans l'environnement Windows 10 Home à l'intérieur du conteneur Docker est décrite. (Il peut y avoir des omissions) image.png

Installer Docker

Tout d'abord, installez Docker Toolbox, mais la procédure est entièrement décrite dans Remarque sur l'installation de docker dans Windows 10 home --Qiita, donc il est soudainement omis. Faire.

Jetez un œil à l'intérieur de la VM exécutée dans Virtual Box

Ensuite, voyons ce qui se passe à l'intérieur de la machine virtuelle qui exécute le conteneur Docker.

python


C:\Users\hogehoge\workspace\pythondocker>docker-machine ssh default
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

docker@default:~$ 

Vous êtes maintenant dans une VM nommée default.

Accédez au répertoire racine de la VM et affichez les dossiers / fichiers stockés dans le dossier racine

Accédez à la racine de la VM et affichez


docker@default:~$ cd /
docker@default:/$ ls
home          mnt           run           tmp
bin           init          opt           sbin          usr
c             lib           proc          squashfs.tgz  var
dev           lib64         sys           etc           linuxrc
root 

Le lecteur C du système d'exploitation Windows actuel est monté dans le dossier «c» ci-dessus. Ainsi, lorsque vous accédez directement sous C sur la VM, faites quelque chose comme `` cd / c / ''.

Accédez au lecteur C monté sur la machine virtuelle et affichez-le


docker@default:/$ cd /c/ 
docker@default:/c$ ls
Users

Commande exit lors de la sortie de la VM

Sortez de la VM


docker@default:/c$ exit
logout
exit status 127

Préparer la structure des dossiers et des fichiers

Préparez les dossiers et fichiers dans un répertoire de travail approprié avec la structure suivante.

pythondocker/  :Répertoire de travail côté Windows
 ├ cgi-bin/    :Dossier de stockage des scripts python exécutés dans le conteneur Docker
 │ └ index.py  :Configurer un serveur Web simple et publier la page
 └ Dockerfile  :Fichier Docker

Écrire un fichier Docker

Créez un fichier Docker comme suit.

pythondocker/Dockerfile


# python3.6.Obtenez 9 images Docker
#Si vous pensez que python est installé sur votre image Docker
FROM python:3.6.9
#Spécifiez le répertoire de travail dans le conteneur Docker
WORKDIR /app
#les fenêtres./cgi-Dossier Bin, application dans le conteneur Docker/cgi-Copier dans la corbeille
#En faisant cela, cgi-Vous pouvez accéder aux fichiers sous la corbeille dans Docker
COPY ./cgi-bin /app/cgi-bin
#Dans Docker "python cgi-bin/index.Exécutez la commande "py"
CMD ["python", "cgi-bin/index.py"]

Les commandes décrites dans ce Dockerfile sont exécutées à partir du dessus lors de la création de l'image Docker.

Créer un script python pour publier une page Web

Créez un fichier "index.py" dans le dossier "python docker / cgi-bin". Il s'agit d'un script Python permettant de configurer un serveur Web simple dans un conteneur Docker et de publier une page sur le port 8080. Lorsque j'accède au serveur Web publié, il est dit "Bonjour Python Docker on Widows 10 Home!".

pythondocker/cgi-bin/index.py


import http.server
import socketserver

LISTEN_PORT = 8080

class ServerHandler(http.server.SimpleHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b"<h1>Hello Python Docker on Widows 10 Home!</h1>")

if __name__ == "__main__":
    HOST, PORT = '', LISTEN_PORT

    with socketserver.TCPServer((HOST, PORT), ServerHandler) as server:
        server.serve_forever()

Créer une image Docker

Ensuite, créez une image Docker basée sur le fichier Docker créé. Lancez une console appropriée (invite de commande, etc.), déplacez-vous vers le dossier pythondocker et

#Bouge toi
C:\Users\hogehoge\workspace>cd pythondocker
#Vérifier avec dir
C:\Users\hogehoge\workspace\pythondocker>dir
Le nom de volume du lecteur C est Windows
Le numéro de série du volume est 1273-2EFA

 C:\Users\hogehoge\workspace\répertoire pythondocker

2020/05/05  17:03    <DIR>          .
2020/05/05  17:03    <DIR>          ..
2020/05/05  17:00    <DIR>          cgi-bin
2020/05/06  16:05               581 Dockerfile
1 fichier 581 octets
3 répertoires 151,054,426,112 octets d'espace libre

Exécutez la commande docker build pour créer l'image Docker

Commande de création d'image Docker


C:\Users\hogehoge\workspace\pythondocker>docker build --tag=hellopython .
# --tag :Balise d'image
# .     :Affiche le chemin d'accès au dossier où se trouve le fichier Docker

Succès si la sortie suivante est sortie

Sortie de la commande de construction


Sending build context to Docker daemon  4.608kB
Step 1/4 : FROM python:3.6.9
3.6.9: Pulling from library/python
16ea0e8c8879: Pull complete
50024b0106d5: Pull complete
ff95660c6937: Pull complete
9c7d0e5c0bc2: Pull complete
29c4fb388fdf: Pull complete
49a8841b38a3: Pull complete
c4a74b0ecce5: Pull complete
3e19e7d95a0c: Pull complete
c6c6b4054fe6: Pull complete
Digest: sha256:47e547af7ffcc2f5d1e5c76a96f4122943c4631d10bb3a0375e870fd95799107
Status: Downloaded newer image for python:3.6.9
 ---> 5bf410ee7bb2
Step 2/4 : WORKDIR /app
 ---> Running in 79bc620b5bcb
Removing intermediate container 79bc620b5bcb
 ---> 253f4f561100
Step 3/4 : COPY ./cgi-bin /app/cgi-bin
 ---> 2a4c59e6f250
Step 4/4 : CMD ["python", "cgi-bin/index.py"]
 ---> Running in f85f3c374389
Removing intermediate container f85f3c374389
 ---> 9f8b8e3b53d2
Successfully built 9f8b8e3b53d2
Successfully tagged hellopython:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

Il y a un avertissement de sécurité, mais ignorez-le pour le moment.

Vérifiez si l'image Docker intégrée est créée correctement

Vérifiez l'image du docker


C:\Users\hogehoge\workspace\pythondocker>docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hellopython         latest              8a31f9eb38e3        33 minutes ago      913MB

Exécutez l'image Docker intégrée

Exécutez l'image Docker que vous venez de créer et exécutez le serveur Web à l'intérieur du conteneur Docker. Exécutez l'image Docker hellopython construite avec la commande `` docker run```.

Exécuter l'image Docker


docker run --rm -p 4000:8080 -v /c/Chemin du lecteur C vers le dossier docker python/cgi-bin/:/app/cgi-bin/ -d hellopython

docker runUne description des options de commande est la suivante:

---- rm: Option pour arrêter = supprimer --Option pour supprimer automatiquement le conteneur lorsque le conteneur est arrêté --- p: Options de transfert de port

Vérifiez le conteneur Docker en cours d'exécution pour le moment

Vérification du conteneur Docker


C:\Users\hogehoge\workspace\pythondocker>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES 
eb3bf047d160        9f8b8e3b53d2        "python cgi-bin/inde…"   About an hour ago   Up About an hour    0.0.0.0:4000->8080/tcp   epic_jang

Accéder à un serveur Web s'exécutant dans un conteneur Docker

Enfin, accédez au serveur Web exécuté dans le conteneur Docker et affichez-le dans le navigateur. Tout d'abord, vérifiez l'adresse IP de la machine virtuelle exécutant le conteneur Docker.

Confirmation de l'adresse IP de la VM


C:\Users\hogehoge\workspace\pythondocker>docker-machine ip
192.168.99.100

Après cela, lorsque vous accédez à "http: // : 4000" sur le navigateur, la page Web doit s'afficher comme indiqué ci-dessous. (Dans mon cas http://192.168.99.100:4000/)

image.png

Site référencé

Je me suis référé au site suivant.

Recommended Posts

Mettez Docker dans Windows Home et exécutez un serveur Web simple avec Python
Démarrez un serveur Web Python simple avec Docker
Exécutez une application Web Python avec Docker
Lancer un serveur Web avec Python et Flask
Exécutez un algorithme simple en Python
Janken Poi avec Python Exécutons sur un serveur local Windows pour les débutants
Configurer un serveur HTTPS simple avec Python 3
Configurer un serveur SMTP simple en Python
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
Jusqu'à ce que Python soit installé avec pythonbrew et que Flask s'exécute sur le serveur WSGI
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Créez un Slackbot simple avec un bouton interactif en python
Essayez de créer un jeu simple avec Python 3 et iPhone
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Exécuter un fichier Python avec une importation relative dans PyCharm
Créez un faux serveur Minecraft en Python avec Quarry
[Vagrant] Configurer un serveur API simple avec python
Exécutez python avec PyCharm (Windows)
Hello World avec un serveur Web simple qui suit WSGI (Web Server Gateway Interface) en Python
Jusqu'à ce que vous créiez un environnement d'apprentissage automatique avec Python sur Windows 7 et que vous l'exécutiez
[Création d'un environnement CI en 2 heures] Procédure de création d'un serveur Web Python avec CircleCI et réussite d'un test de communication HTTP
J'ai fait un jeu de frappe simple avec tkinter de Python
Créez un environnement de développement Python simple avec VSCode et Docker Desktop
Bibliothèque pour spécifier un serveur de noms en python et dig
Comment démarrer un serveur WEB simple qui peut exécuter des cgi de php et python
Mettez Ubuntu dans Raspi, mettez Docker dessus et contrôlez GPIO avec python à partir du conteneur
Appuyez sur une commande en Python (Windows)
Mettez MeCab dans "Windows 10; Python3.5 (64 bits)"
Créer un serveur Flask avec Docker
Jusqu'à ce que vous mettiez Python dans Docker
Implémentation d'un algorithme simple en Python 2
J'ai fait un circuit simple avec Python (AND, OR, NOR, etc.)
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Créez un simple OMR (lecteur de feuille de marque) avec Python et OpenCV
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
Construction de l'environnement LaTeX et R (un peu Python) avec SublimeText3 (Windows)
Exécutez le code de sortie sur le serveur Web local en tant que "A, faisant semblant d'être B" en python
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Créer un fichier power simple avec Python
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
Exécutez le servo avec Python sur ESP32 (Windows)
Un client HTTP simple implémenté en Python
J'ai mis Alpine Linux dans Larkbox et en ai fait mon serveur domestique
Utilisation de venv dans un environnement Windows + Docker [Python]
Configurer un serveur Samba avec Docker
Essayez de dessiner une animation simple en Python
Mettez OpenCV dans OS X avec Homebrew et vidéo d'entrée / sortie avec python
Créer une application GUI simple en Python
Jetons JavaScript et écrivons un front-end Web en Python!
Un mémo contenant Python2.7 et Python3 dans CentOS
Création d'un environnement Python 3.6 avec Windows + PowerShell
[Python] [Windows] Faites une capture d'écran avec Python
Créer un environnement de développement à l'aide de Jupyter et Flask avec Python dans Docker (prend en charge à la fois VS Code / code-server)
Démonisez une application Web Python avec Supervisor
Surveillance simple du serveur avec AWS Lambda (Python) et notification des résultats avec Slack
Exécuter l'interpréteur Python dans le script
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Découvrez à quel âge un joueur de baseball peut frapper une base avec Python et Stan