"Faciliter la construction de l'environnement" Vous pouvez facilement créer un environnement avec un docker tel que des packages, des bibliothèques, la construction d'un environnement de développement, la construction d'un environnement d'exécution, etc.
Si vous mettez python etc. sur l'hôte, il sera difficile de le désinstaller ou cela provoquera un conflit avec d'autres packages. En créant l'environnement dans le conteneur au lieu de l'hôte et en supprimant le conteneur en cas d'erreur, il peut être créé à un endroit où l'hôte n'est pas du tout affecté.
Vous pouvez créer et supprimer l'environnement plusieurs fois tant que vous écrivez la méthode de construction d'environnement dans le fichier docker. Vous pouvez également créer exactement le même environnement en donnant le fichier docker ou l'image à quelqu'un d'autre.
Puisque l'environnement est construit dans un endroit qui n'a rien à voir avec l'hôte, il n'y a pas d'erreurs spécifiques à cette personne.
Un dépannage est rarement réussi
C'est juste fini.
Même si vous configurez deux conteneurs à partir de la même image Docker, les systèmes de fichiers de chaque conteneur sont indépendants. Travailler à l'intérieur d'un conteneur n'affecte pas les autres conteneurs ou hôtes.
bash, zsh, sh ・ ・ ・
L'application pour exécuter le shell est le terminal. Le shell est un outil de connexion au noyau
Variables utilisées par les processus exécutés sur le système d'exploitation pour partager des informations
※processus (Terminal, navigateur Chrome ...)
Commande "echo $ SHELL" $ ・ ・ ・ Quelque chose comme un marqueur pour les variables environnementales
Commande "export AGE = 20"
Dockerfile ・ Dessin de conception d'image Docker ·fichier texte
Il décrit comment créer une image Docker. Il est facile à comprendre car il décrit quel type de conteneur et quel type d'image Docker il s'agira
Docker image Qu'est-ce qui rend le conteneur Il existe une fonction pour gérer les versions appelées balises.
L '"image docker" se compose de plusieurs "calques d'image". Lorsque le conteneur Docker est créé, un nouveau "calque d'image" est ajouté à "l'image Docker".
"Un ensemble d'environnement de développement, d'environnement d'exécution, etc."
Vous pouvez placer plusieurs conteneurs sur votre ordinateur ou serveur. Installez l'environnement de développement, l'environnement d'exécution, les packages et les bibliothèques nécessaires dans le conteneur. Vous pouvez ensuite travailler à l'intérieur du conteneur, utiliser le conteneur pour exécuter des scripts et exécuter du code.
Si vous créez un conteneur, vous pouvez l'utiliser dans d'autres membres, environnement de développement, environnement de test et environnement de production.
Le conteneur est réalisé à partir d'une "image Docker". Vous pouvez également créer une "image Docker" à partir d'un conteneur. Une «image Docker» est créée à partir d'un fichier texte appelé «fichier Docker».
Docker hub Un des registres Docker Il existe différents référentiels (boîtes) et un type d'image Docker est géré pour chaque référentiel. (Plusieurs images de docker avec différentes balises sont incluses)
Emplacement de stockage de "l'image Docker"
docker login Vous pourrez accéder au hub docker.
docker pull [image] Apportez l'image localement (hôte, votre ordinateur) depuis le hub docker
docker run -it [image] bash Créer un conteneur à partir d'une image Docker
Exemple) docker run -it ubuntu bash Créez un conteneur à partir de l'image de "ubuntu".
Il existe deux options, -i et -t.
-i
Option pour ouvrir le canal pour l'entrée.
Le canal d'entrée est un canal appelé stdin
Lorsque vous ouvrez un canal appelé stdin, ce que vous tapez à partir du clavier arrive à Linux.
Un canal qui ouvre le canal stdin du conteneur à partir de l'hôte.
Si vous omettez le "-i" et le docker run (start bash), les informations de la commande que vous avez tapée dans le conteneur ne sont pas transmises.
-t Nettoyez le résultat de sortie. (Faites-le joli). Une commande pour afficher une jolie sortie.
docker run hello-world Créer un conteneur à partir de l'image de "hello-world"
exit Sortez du conteneur
docker ps -a Vérifiez l'état du conteneur
docker images Afficher une liste d'images sur l'hôte
docker restart Mettez le conteneur en place
docker exec -it [container] bash Exécuter le programme spécifié (bash) pour le conteneur
docker commit [container] [image] Passer du conteneur à l'image (Créer une nouvelle image)
docker tag [source] [target] Redéfinissez l'image avec un nouveau nom. L'ancienne image reste et vous pouvez nommer la nouvelle image.
[source] ・ ・ ・ Nom de l'image actuelle [cible] ・ ・ ・ nouveau nom d'image
docker push [image] Push to docker hub
docker rmi [image] Supprimer l'image rmi ・ ・ ・ supprimer l'image
docker create Faire un contenant
docker start Exécutez le conteneur
※run = create + start
docker run [image] [command] Remplacement de commande par défaut Si vous tapez une commande supplémentaire après "docker run", cette commande par défaut sera écrasée et cette [commande] sera exécutée.
docker rm
Supprimer le conteneur Si le conteneur est en cours d'exécution, il ne peut pas être supprimé. (Arrêtez avec docker stop)
docker system prune Supprimez tous les conteneurs sortis. Vous pouvez également effacer les images pendantes inutilisées (images qui n'ont encore rien utilisé) et les caches.
docker run --name [container_name] [image] Spécifier le nom du conteneur Vous pouvez nommer et démarrer le conteneur. Lorsque vous souhaitez que le conteneur continue de fonctionner en arrière-plan, ou lorsque vous utilisez un serveur partagé, plusieurs personnes y installent le conteneur. À ce moment-là, vous avez besoin d'un nom. Lorsque vous accédez à un conteneur depuis un autre programme ou utilisez un conteneur, vous pouvez l'appeler immédiatement en lui donnant un nom.
docker run -d [image] "-D" est le cas où le conteneur s'exécute toujours en arrière-plan. Lorsque vous l'utilisez dans un environnement de développement, il est nécessaire de toujours démarrer le conteneur en arrière-plan, utilisez donc la commande "-d" pour passer en mode détaché. -d ・ ・ ・ détaché
Démarrez le conteneur et détachez-le immédiatement de l'hôte. Le conteneur se déplace dans les coulisses.
mode détaché ⇆ mode premier plan
Le conteneur a démarré sans "-d" Un cas où vous entrez directement dans le conteneur, ou configurez le conteneur une fois, démarrez un programme et supprimez immédiatement le conteneur
docker run --rm [image] Supprimez le conteneur dès que vous le quittez.
dokcer build . Créer une image Docker à partir d'un fichier Docker Habituellement, déplacez-vous vers le dossier dans lequel se trouve le Dockerfile, puis spécifiez le répertoire actuel et créez l'image Docker.
docker build -t [name] [directory] Vous pouvez nommer l'image Docker avec l'option -t.
Dockerfile
・ Dessin de conception d'image Docker ·fichier texte
Il décrit comment créer une image Docker. Il est facile à comprendre car il décrit quel type de conteneur et quel type d'image Docker il s'agira
Lors de la création d'un environnement, entrez une fois dans le conteneur, créez l'environnement à l'intérieur du conteneur et connaissez les packages nécessaires. Ensuite, écrivez dans la version Dockerfile et docker. Cela devient le flux.
⭐️ Minimisez le nombre de couches dans l'image Docker. ・ Il existe trois instructions pour créer un calque docker: EXÉCUTER, COPIER et AJOUTER.
INSTRUCTION arguments
Écrivez sous la forme de. arguments ・ ・ ・ Arguments
ex)
FROM ubuntu:latest
RUN touch test
ex)
FROM ubuntu:latest
RUN apt-get update && apt-get install -y \
curl\
cvs\
nginx
CMD ["/bin/bash"]
docker instruction FROM [image] Ce qui détermine l'image Docker de base (dans l'exemple, ubuntu est la base)
Il est bon de spécifier une image avec le minimum de fonctions nécessaires. Il s'agit souvent d'une image placée sur le hub Docker. Dans de nombreux cas, l'image Docker avec le système d'exploitation tel quel, comme ubuntu, est utilisée.
Run [command]
INSTRUCTION de docker pour exécuter des commandes linux
Exécutez les commandes Linux nécessaires pour configurer l'image. Exécuter la commande (créer un calque d'image) Fondamentalement, créez une image docker avec l'instruction docker de RUN.
La méthode d'écriture de base est l'exemple ci-dessus, il est donc bon de s'en souvenir.
ubuntu gère les paquets avec la commande apt-get (ou apt). Il est courant de toujours obtenir une nouvelle liste avant l'installation.
apt-get update ・ ・ ・ Obtenez la dernière liste de paquets apt-get install [package] ・ ・ ・ Install [package]
"-Y" ... Répondez par "oui" lors de l'installation du paquet. Organisez les packages requis dans l'ordre abc.
"" ... Un saut de ligne est également considéré comme une ligne.
RUN crée un calque d'image Docker, donc si vous effectuez plusieurs RUN, vous aurez autant de calques d'image Docker qu'il y en a, et l'image Docker s'agrandit. Pour éviter cela, connectez les commandes avec "&&" et réduisez autant que possible le nombre de lignes RUN.
CMD["executable", "param1", "param2"] Vous pouvez spécifier la commande par défaut pour l'image Docker.
exécutable ・ ・ ・ Commande exécutable
Les fichiers Docker se terminent généralement par CMD.
Ce n'est pas obligatoire, mais il vaut mieux le mettre. Après tout, lorsque vous regardez le Dockerfile, vous pouvez voir que cette commande fonctionne par défaut.
COPY [src][destination] Au moment de la construction, les fichiers du contexte de construction peuvent être inclus dans l'image du docker. → Vous pouvez transmettre certains fichiers ou dossiers de l'hôte au conteneur.
src ・ ・ ・ Chemin du fichier hôte destination ・ ・ ・ Chemin du fichier qui stocke le fichier cible dans le conteneur
"COPY" et "ADD" sont similaires, mais fondamentalement "COPY" est très bien.
ADD [src][destination] Au moment de la construction, les fichiers du contexte de construction peuvent être inclus dans l'image du docker. → Vous pouvez transmettre certains fichiers ou dossiers de l'hôte au conteneur.
Lorsque vous créez le fichier tar compressé dans le docker, il l'envoie à l'image du docker et le décompresse.
ENTRYPOINT Vous pouvez spécifier la commande par défaut lors de l'exécution du docker. (Identique à CMD)
"ENTRY POINT" ne peut pas être écrasé lors de l'exécution du docker. Dans "CMD", il peut être écrasé lors de l'exécution du docker.
Si "ENTRY POINT" est dans le Dockerfile, la manière d'écrire les changements CMD. La forme de CMD spécifie l'argument de cette commande spécifié dans "ENTRYPOINT".
Exemple) ・ CMD sans POINT D'ENTREE CMD ["ls", "--help", "argument", "argument", ...]
・ CMD avec POINT D'ENTREE ENTRYPOINT["ls"] CMD ["--help", "argument", "argument", ...]
ENV [key] [value] Les variables d'environnement peuvent être spécifiées dans le Dockerfile. Souvent utilisé lors du passage par un chemin.
Variables d'environnement: variables utilisées par tous les processus exécutés sur le système d'exploitation pour partager des informations. Combinaison clé et valeur
ENV [key]=[value] Peut aussi être écrit
Vous pouvez modifier le répertoire dans lequel l'instruction docker décrite dans Dockerfile est exécutée.
Dans le Dockerfile, l'emplacement où chaque instruction est exécutée est directement sous la racine. Dans le Dockerfile, même si vous vous déplacez avec la commande cd avec RUN, la commande suivante sera exécutée avec RUN directement sous la racine. Cependant, cela peut être gênant, alors spécifiez le chemin absolu dans "WORKDIR" et exécutez les instructions suivantes sur le chemin spécifié.
Lors de l'exécution de la construction du docker, transmettez le dossier spécifié au démon docker. docker damon crée une image docker basée sur le dossier et Dockerfile.
Vous avez donc besoin d'un dossier ainsi que d'un Dockerfile.
Le dossier à construire est appelé "contexte de construction". Dans ce contexte, le démon docker crée une image docker à partir du fichier docker.
contexte ・ ・ ・ Environnement et situation
・ Gestion des objets docker. (En fait, utilisez le conteneur et l'image du docker) ・ Communiquez avec d'autres outils Docker tels que docker compose.
objet docker ・ ・ ・ Conteneur, image, réseau, etc.
Une commande CLI docker (telle que «docker build» ou «docker run») est utilisée pour envoyer des commandes au démon docker qui gère les objets docker.
Si vous avez déjà une couche docker, vous n'avez pas besoin de la reconstruire. Tout en conservant le fichier docker, divisez RUN en plusieurs entreprises.
Si vous ajoutez un nouveau package et que vous le construisez avec RUN in one, un nouveau calque d'image sera créé.
ex)
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y \← Diviser RUN
curl\
cvs\
git\← Ajouter
nginx
CMD ["/bin/bash"]
docker build -f [docker file] [build context] S'il n'y a pas de fichier docker dans le contexte de construction, ou si vous avez créé un autre fichier docker et séparé de dev et test, utilisez l'option "-f" et effectuez une construction docker pour spécifier un fichier docker spécifique, puis une construction docker. ça peut.
Si vous avez différents fichiers docker dans l'environnement de développement et l'environnement de test, vous pouvez utiliser "-f" pour spécifier le fichier docker et créer le docker.
Le nom du Dockerfile est 開発系ではDockerfile.dev Dans le test Dockerfiel.test Le nom du fichier est souvent sous la forme de.
Le système de fichiers du conteneur est indépendant du système de fichiers de l'hôte, mais l'option "-v" permet au conteneur d'accéder au système de fichiers de l'hôte. Montez le système de fichiers hôte sur le conteneur. En montant le système de fichiers, vous pouvez vous comporter comme si le système de fichiers hôte se trouvait dans le système de fichiers du conteneur. (En fait, il n'est pas dans le conteneur. Si vous le mettez dans le conteneur, il sera grand.)
Dans l'environnement de développement, le code est souvent placé sur l'hôte et le conteneur est utilisé lors de l'exécution du code.
Fondamentalement, lors du développement, il est courant de placer des scripts de code et des données sur l'hôte et non dans le conteneur.
docker run -v [host/path]:[container/path]
Exécutez le conteneur avec l'ID utilisateur et l'ID de groupe
L'accès aux fichiers est un problème lorsque le conteneur peut accéder au système de fichiers de l'hôte. En ajoutant l'option "-u", vous pouvez configurer un conteneur en spécifiant l'ID utilisateur ou l'ID de groupe. Par conséquent, les privilèges de l'ID utilisateur hôte et de l'ID de groupe sont appliqués au conteneur tels quels.
docker run -u
Connectez le port hôte au port du conteneur Port: ce que le processus utilise pour la communication de données L'adresse IP et le nom d'hôte sont l'adresse du bâtiment et le port est le numéro de la chambre.
Lorsque vous accédez au serveur Web ou au service Web de l'hôte depuis l'extérieur, vous pouvez accéder au serveur Web ou au service Web de l'hôte en spécifiant le port en plus du nom et de l'adresse IP de l'hôte. Si un serveur Web ou un service Web est en cours d'exécution sur le conteneur, vous pouvez accéder au port du conteneur de l'extérieur en connectant (en publiant) le port hôte et le port du conteneur.
docker run -p [host_port]:[container_port] docker run -p 8888:8888
S'il y a plusieurs conteneurs dans l'hôte et qu'un conteneur utilise toute la mémoire, l'ensemble du système peut tomber en panne. Pour éviter cela, vous pouvez spécifier la limite supérieure de "cpu" et "memory" pour chaque conteneur.
docker run --cpus [#ofCPUs] --memory [byte]
[#ofCPUs] ・ ・ ・ Définit le processeur maximum auquel le conteneur peut accéder [octet] ・ ・ ・ Définit la mémoire maximale à laquelle le conteneur peut accéder
Les informations sur le conteneur Docker s'affichent dans une liste.
docker inspect [container] | grep -i [something]
Le contenu affiché par docker inspect est si volumineux que vous ne pouvez pas accéder immédiatement aux informations dont vous avez besoin. Utilisez grep -i [quelque chose] pour afficher seulement l'inspection de dockr liée à la chaîne de caractères spécifiée telle que "CPU", "mémoire" et "variable d'environnement (env)".
-i ・ ・ ・ ignorer, ignorer la casse
Cet article a été créé sur la base du cours udemy docker de Kame-san (https://twitter.com/usdatascientist?s=21) (https://www.udemy.com/share/103aTRAEMfeVhaTXoB/). ..
Le blog de Kame (https://datawokagaku.com/docker_lecture/)
Recommended Posts