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.
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.
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 |
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)
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.
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é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
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é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()
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 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 run
Une 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
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: //
Je me suis référé au site suivant.
Recommended Posts