Docker est un «outil pratique qui facilite la création d'un environnement de développement».
Même si vous voulez vraiment jouer au baseball, il est difficile de se faire une place ... Préparez une base, mesurez la distance, préparez une batte, une balle et un siège pour spectateur. Pourtant! Avec Docker, vous pouvez créer instantanément un dôme PayPay! (Pas terminé.)
Les terrains de baseball ne sont pas possibles, mais c'est possible dans un environnement de développement de système.
C'est une application pratique qui vous permet de créer instantanément un environnement de développement système et de distribuer cet environnement à plusieurs personnes.
Cet article n'aborde pas spécifiquement des concepts tels que les conteneurs. Je crée un article aux fins suivantes.
―― Vous pouvez toucher Docker et ressentir le sentiment que l'environnement système est prêt. ――Vous pouvez le retirer immédiatement lorsque vous vous en souvenez plus tard.
Nezko! !! !! !! !! !! Docker Je ferai de mon mieux pour l'utiliser! !! !!
* Si vous ne l'avez pas encore installé, veuillez visiter le site officiel ci-dessus. </ font>
En particulier, j'ai étudié et renvoyé au site principal. Le concept est bien décrit, donc si vous êtes un lecteur de cet article, veuillez jeter un œil.
up
, build
et start
, alors je les ai résuméesCréez un conteneur avec PHP et Apach installés sur CentOS7.
① Créez un Dockerfile dans n'importe quel emplacement (nom du fichier: dockerfile) 2 Créez une image à partir du Dockerfile créé. ③ Créez un conteneur basé sur l'image.
dockerfile
#Basé sur l'image centos7 de Docker Hub.
FROM centos:centos7
#Installez Apach et php dans l'image centos7
RUN yum -y install httpd php
#Exécutez la commande pour démarrer Åpach
CMD ["/usr/sbin/httpd","-DFOREGROUND"]
Voir Projet de japonaisisation de document Docker pour des explications sur les options.
#Contenu
docker build -t nom de l'image:Nom de la balise Répertoire Dockerfile
#Exemple | Le nom de l'image est lamptest. La balise est 1.0. Utiliser le fichier dockerfile du répertoire courant
docker build -t lamptest:1.0 .
Ce qui précède va créer une image.
#Contenu
docker run -d -numéro de port p:numéro de port--nom Nom du conteneur Nom de l'image:Nom de la balise
#Exemple | Attribuez la version du port 80 à la version 8080.
#Le nom du conteneur est testserver.
#Les images et les tags sont les plus lamentables:1.Utilisez 0.
docker run -d -p 8080:80 --name testserver lamptest:1.0
Le conteneur est terminé avec succès.
Lorsque vous accédez à [http: // localhost: 8080](http: // localhost: 8080), l'écran suivant s'affiche.
#Commencez
nom du conteneur de démarrage du docker
#Arrêtez
nom du conteneur d'arrêt du docker
#Entrez dans le conteneur
docker exec -i -t nom du conteneur bash
L'opération est également possible avec l'interface graphique.
Ceux qui sont fréquemment utilisés sont brièvement décrits. Veuillez consulter Projet de japonaisisation de document Docker pour des explications plus détaillées.
From Créez en fonction de l'image Docker.
#Contenu
FROM nom de l'image:Nom de la balise
#Exemple | Basé sur l'image de centos
FROM centos:centos7
Run Exécutez la commande pour l'image spécifiée dans FROM.
#Contenu
FROM Commande à exécuter
#Exemple | Installation de httpd avec yum
RUN yum -y install httpd
COPY Spécifiez le fichier que vous souhaitez copier dans l'image Docker (dans le conteneur).
#Contenu
Chemin du fichier que vous souhaitez copier dans l'image FROM Chemin de l'image de destination de la copie
#Exemple | fichier hoge dans le même répertoire que Dockerfile,/Copier dans le répertoire tmp.
COPY hoge.txt /tmp
ADD Si vous spécifiez un fichier qui peut être spécifié par URL et qui est compressé par une archive tar (gzip, bzip2, xz), il sera automatiquement développé. À part cela, c'est la même chose que la commande COPY.
#Contenu
Le chemin du fichier ou l'URL que vous souhaitez copier dans l'image ADD.
#Exemple | tar.Stockage d'images lors de l'expansion du fichier gz
ADD hoge.tar.gz /tmp
#Exemple | Enregistrez le fichier de destination de l'URL dans le répertoire spécifié.
ADD https://zukan.pokemon.co.jp/detail/025 /tmp
RUN Exécutez la commande lors de la création de l'image.
#Contenu
Option de commande RUN
#Exemple | Commande ls-Avec l'option d'un.
RUN ls -a
CMD Exécutez la commande au démarrage du conteneur.
#Contenu
CMD [commander,option]
#Exemple | Commande ls-Avec l'option d'un.
CMD [ ls , -a ]
ENV Entrez une valeur dans le nombre de variables d'environnement. (Equal peut être omis.)
#Contenu
Nom de la variable d'environnement ENV=Valeur de la variable d'environnement
Nom de la variable d'environnement ENV Valeur de la variable d'environnement
#Exemple | Insérez ichinokata dans la variable d'environnement MIZUNOKOKYU
ENV MIZUNOKOKYU=ichinokata
USER Changement de nom d'exécution utilisateur
#Contenu
Nom d'utilisateur
#Exemple | Changer le nom d'utilisateur en akiunleash
USER akiunleash
Il est possible de créer plusieurs conteneurs d'applications et de bases de données en un seul système. Créons des conteneurs Rails et PostgreSQL séparément et travaillons ensemble comme un seul système.
① Créez les fichiers nécessaires tels que docker-compose.yml ② Créez une image et un conteneur à l'aide de l'exécution de docker-compose ③ Le Gemfile sera mis à jour, donc reconstruisez-le avec le bulde docker-compose. ④ Modifiez les paramètres de nom d'utilisateur et de mot de passe afin de pouvoir vous connecter à PostgreSQL du côté Rails. ⑤ Créer une base de données PostgreSQL à partir de Rails ⑥ Achèvement!
docker-compose.yml
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_PASSWORD=password
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
dockerfile
#Basé sur l'image centos7 de Docker Hub.
FROM ruby:2.3.3
#À partir de la mise à jour du logiciel de gestion des packages
# build-essential libpq-Installer dev nodejs
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
#Créer le répertoire myapp dans le conteneur
RUN mkdir /myapp
#Définir dans le répertoire de travail
WORKDIR /myapp
#Créer un fichier dans le même répertoire que dockerfile dans le conteneur
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
#Installer des rails écrits en Gemfile
RUN bundle install
#Créer des fichiers et des répertoires Rails dans des conteneurs
ADD . /myapp
Gemfile
source 'https://rubygems.org'
gem 'rails', '5.0.0.1'
Gemfile.lock
#Fichier vide
docker-compose run web rails new . --force --database=postgresql
docker-compose build
config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
username: myapp
password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
docker-compose up -d
docker-compose run web rake db:create
Si vous accédez à [http: // localhost: 3000 /](http: // localhost: 3000 /) et que la page suivante s'affiche, cela réussit.
Vous pouvez voir que le conteneur est également démarré correctement.
S'il contient des conteneurs inutiles, il descendra une fois et disparaîtra au redémarrage.
#Une fois en bas
docker-compose down
#Côté vers le haut
docker-compose up -d
docker-compose.yml
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_PASSWORD=password
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
article | Explication |
---|---|
version | docker-composer la version |
services | Nom du conteneur (créer WEB et DB) |
image | Utiliser l'image de Docker Hub |
environment | Définir les variables d'environnement |
build | Utilisez le fichier dockerfile spécifié. |
command | Commandes à exécuter après la création du conteneur |
volumes | Fichier de montage |
ports | Spécifier un port |
depends_on | Ordre de démarrage |
J'espère que cela vous aidera à avoir une idée de ce qu'est Docker. Si vous trouvez des erreurs dans le contenu, veuillez nous en informer.
Date | Contenu |
---|---|
2020/11/18 | Première édition |
Recommended Posts