Docker
1 Docker Profil
1.1 Quelle est la virtualisation
Dans l'ordinateur, la virtualisation (en anglais: la virtualisation) est une technologie de gestion des ressources, les différentes entités est les ressources de l'ordinateur, tels que les serveurs, le réseau, la mémoire et le stockage, etc., pour être abstraite, présentée après la conversion à briser la structure inter-entités les obstacles ne peuvent pas être coupés, de sorte que l'utilisateur peut configurer que la meilleure façon originale d'utiliser ces ressources. Un grand nombre de ces nouvelles ressources virtuelles est pas la façon de mettre en place des ressources existantes, la configuration géographique ou physique est limitée. ressources virtualisées généralement appelées à inclure la puissance de calcul et de stockage de données.
Dans l'environnement de production réel, la technologie de virtualisation est principalement utilisée pour résoudre la surcapacité de matériel physique haute performance et l'ancien ancienne capacité matérielle est trop faible réutilisation de réorganisation, la transparence du matériel physique sous-jacente afin de maximiser l'utilisation des ressources matérielles physiques utiliser pleinement
De nombreux types de technologies de virtualisation, telles que: la virtualisation des logiciels et de la virtualisation matérielle, la virtualisation de la mémoire, la virtualisation de réseau (vip), la virtualisation de bureau, la virtualisation des services, des machines virtuelles, et ainsi de suite.
1.2 Quel est le Docker
Docker est un projet open source, est né au début de 2013, il a d' abord été une société interne de projet amateur dotCloud. Il est basé sur le lancement de Google de la langue Go. plus tard projet rejoint la Fondation Linux, le respect du protocole Apache 2.0, le code de projet à GitHub effectuer la maintenance sur.
Docker puisque l'attention générale open source et la discussion que les entreprises dotCloud ont été rebaptisés plus tard Docker Inc. RedHat a concentré son soutien Docker RHEL6.5 dans, Google est également largement utilisé dans ses offres PaaS.
L'objectif de Docker projet est de parvenir à une solution de virtualisation du système d'exploitation léger. Docker est le fondement de la technologie des conteneurs Linux (LXC).
Sur la base du LXC Docker était nouveau paquet, afin que les utilisateurs ne ont pas besoin de se soucier de la gestion des conteneurs, ce qui rend l'opération plus facile. Action de l'utilisateur conteneurs Docker comme vous le faites d'une machine virtuelle léger rapide aussi facile.
Pourquoi Docker?
(1) puces rapides.
Les utilisateurs ont besoin seulement quelques minutes, vous pouvez mettre votre propre programme « Docker de. » Docker dépend du modèle « copy-on-write » (copy-on-write), les modifications apportées à l'application très rapidement, on peut dire d'atteindre « en raison de cœur, qui est le changement de code » royaume.
随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒中即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户尽可能的充分利用系统资源。
classification logique (2) fonctions
Utilisez Docker, les développeurs ne doivent se préoccuper de l'application en cours d'exécution dans le récipient, et le personnel d'exploitation et d'entretien ne doivent se préoccuper de la façon de gérer le conteneur. objectif de conception Docker est d'améliorer les développeurs de cohérence de l'environnement de production à l'environnement de développement de code d'écriture et des applications à déployer. réduisant ainsi le genre de « développer tout est normal, sans aucun doute des problèmes d'exploitation et d'entretien (l'environnement de test est normal, sur la ligne de la question se résume à est certainement la question de l'exploitation et de maintenance). »
(3) cycle de vie de développement rapide et efficace
L'un des objectifs est de raccourcir le code de développement Docker, tester le déploiement, cycle de fonctionnement en ligne, de sorte que votre application a la portabilité, facile à construire, et une collaboration facile. (Chose populaire à dire, Docker est comme une boîte qui peut contenir beaucoup d'éléments, si vous avez besoin de ces objets peuvent être prendre directement loin la grande boîte, sans avoir besoin d'un morceau tiré de la boîte.)
(4) encourager l'utilisation de l'architecture orientée services
Docker encourager également l'architecture orientée services et des services de micro-architecture. Docker recommander un seul récipient pour exécuter une seule application ou processus, formant ainsi un modèle d'application distribuée, dans ce modèle, une application ou d'un service peut être représenté par une série d'interconnectées à l'intérieur du récipient, de sorte que le déploiement distribué application, les applications ou l'extension de débogage sont très simples, mais aussi d'améliorer l'introspection du programme. (Bien sûr, vous pouvez exécuter plusieurs applications dans un conteneur)
1,3 conteneur de machine virtuelle et comparer
L'image ci-dessous compare les différences entre Docker et le mode traditionnel de la virtualisation, les conteneurs virtualisés sont visibles, la réutilisation directe du système d'exploitation hôte local, alors que la manière traditionnelle, il est mis en œuvre au niveau du matériel au niveau du système d'exploitation.
Par rapport à la machine virtuelle traditionnelle, l'avantage se reflète Docker comme démarrage rapide, en prenant un petit volume.
1.4 composants Docker
1.4.1 serveur et client Docker
Docker est un client - serveur programme d'architecture (C / S). Le client n'a qu'à serveur Docker Docker ou démon fait une demande, le serveur ou le démon fera tout le travail et renvoie le résultat. Docker fournit un outil de ligne de commande Docker et un ensemble de l'API RESTful. Vous pouvez exécuter le démon Docker et le client sur le même hôte, vous pouvez également vous connecter à partir du client local pour exécuter le démon distant Docker Docker sur une autre machine hôte.
1.4.2 conteneur de miroir Docker
Mirroring est de la pierre angulaire de Docker. Les utilisateurs d'exécuter leur propre mise en miroir basée sur les conteneurs. Miroir également Docker partie « build » du cycle de vie. Structure de couche miroir est basée sur un système de fichiers combiné, étape par étape pour construire une série d'instructions. Par exemple:
Ajouter un fichier;
Exécuter une commande;
Ouvrez une fenêtre.
Le conteneur peut également être mis en miroir comme « code source ». Miroir très petit, très « portable », le partage facile, stocké et mis à jour.
Docker peut vous aider à construire et déployer conteneur, vous avez juste besoin de votre propre application ou un service peuvent être emballés dans des conteneurs. Conteneur est mis en miroir le démarrage, le navire peut fonctionner sur un ou plusieurs processus. Nous pouvons croire que le miroir est construit ou emballé étape Docker du cycle de vie, et le conteneur est démarré ou la phase de mise en œuvre. Sur la base d'un conteneur de démarrage en miroir, le conteneur une fois que la mise en service est terminée, nous serons en mesure de se connecter au conteneur installer des logiciels ou des services dont ils ont besoin.
Donc, contenant Docker est:
Un format d'image;
Certains colonne standard de fonctionnement;
Un environnement d'exécution.
Docker se fonde sur le concept d'un conteneur standard. La cargaison de conteneurs standard fourni dans le monde entier, Docker utilisera ce modèle pour leur propre conception, la seule différence est: le transport de conteneurs de marchandises, le transport et le logiciel Docker.
和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容“装载”进去。
Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。
1.4.3 Registry (registre)
Registre Docker avec l'utilisateur pour enregistrer l'image construite. Registre est divisé en deux types publics et privés. société Docker exploite un Registre public appelé le Hub Docker. Les utilisateurs peuvent ouvrir un compte à Docker Hub, partagez et enregistrer leur propre image (Note: Docker Hub téléchargement lent géant l'image, vous pouvez construire votre propre registre privé).
https://hub.docker.com/
2 Installation et mise en service Docker
2.1 Installation Docker
Docker officiel recommandé d'installer dans Ubuntu, car Docker est basé sur Ubuntu version, mais des problèmes se posent en général Docker Ubuntu est la première mise à jour ou patch. Dans de nombreuses versions de CentOS ne sont pas pris en charge par certains le dernier package de mise à jour du patch.
Puisque nous utilisons l'environnement d'apprentissage est CentOS, donc ici nous Docker installé sur CentOS. Note: Il est recommandé d'installer au moins la version CentOS7.x, dans la version CentOS6.x, vous devez installer avant d'installer beaucoup d'autres beaucoup de l'environnement et Docker patches ne prennent pas en charge les mises à jour.
S'il vous plaît monter directement programme de support de miroir Centos7.x
(1) la mise à jour de la dernière yum package
sudo yum update
(2) exigent paquet d'installation, yum-util fournir yum-config-manager fonction, les deux autres sont entraînés carte des périphériques dépendant
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(3) Set Ali nuage source de
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4) montée docker
sudo yum install docker-ce
(5) Après avoir installé la version Voir docker
docker -v
2.2 Set miroir USTC
USTC est un vétéran du fournisseur de services miroir de Linux, et aussi loin dans la version ubuntu 5.04 lors de l'utilisation. docker vitesse accélérateur miroir USTC rapidement. L'un des avantages USTC miroir docker est pas nécessaire d'enregistrer, est un véritable service public.
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
Modifiez le fichier:
vi /etc/docker/daemon.json
Entrez ce qui suit dans le fichier:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
2.3 Docker démarrage et l'arrêt
systemctl commande est le gestionnaire de services du système de commande
Démarrer docker:
systemctl start docker
Arrêt docker:
systemctl stop docker
Redémarrer docker:
systemctl restart docker
Voir docker Statut:
systemctl status docker
boot:
systemctl enable docker
Voir l'information sommaire docker
docker info
Voir la documentation d'aide docker
docker --help
3 Commandes communes
3,1 commande de miroir
3.1.1 Vue Miroir
docker images
Repository: nom de l'image
TAG: balise image
IMAGE ID: ID mirroring
CRÉÉ: Date de création miroir (et non la date d'acquisition du miroir)
TAILLE: taille de l'image
Ces images sont stockées dans l'hôte Docker / var / lib / docker
3.1.2 Recherche Miroir
Si vous avez besoin de trouver l'image que vous voulez à partir du réseau, vous pouvez effectuer une recherche par la commande suivante
docker search 镜像名称
NOM: Nom de l'entrepôt
DESCRIPTION: Miroir Description de
STARS: évaluation des utilisateurs, un miroir de la popularité de réaction
OFFICIEL: sont officiels
AUTOMATED: construire automatiquement, indiquant que le miroir processus de construction automatiquement créé par le Centre Docker
3.1.3 mirroring de traction
Tirer l'image miroir est téléchargé à partir du central au dépôt local
docker pull 镜像名称
Par exemple, je veux télécharger centos7 Mirror
docker pull centos:7
3.1.4 retirer le miroir
Miroir ID suppression Press
docker rmi 镜像ID
Supprimer tous les miroirs
docker rmi `docker images -q`
3.2 commandes à bord de navires
3.2.1 Voir le conteneur
Voir le récipient en marche
docker ps
Voir tous les conteneurs
docker ps –a
Voir la dernière exécution du conteneur
docker ps –l
Vérifiez récipient d'arrêt
docker ps -f status=exited
3.2.2 Création et démarrage conteneur
Créer un conteneur personnalisé Paramètres:
Créer une commande conteneur: run docker
-i: indique le récipient d'exploitation
-t: démarrage d'un conteneur arrière entrera dans sa ligne de commande. Après l'ajout de ces deux paramètres, le navire sera en mesure de créer connecter. Cela est attribué un pseudo-terminal.
-nom: conteneur nommé créé.
-v: représente la relation de mappage de répertoire (le premier est le répertoire hôte, qui est mis en correspondance avec un répertoire sur l'hôte), vous pouvez utiliser plusieurs -v faire plusieurs répertoires ou fichiers de mappage. Note: Il est le répertoire pour la cartographie, des changements sur l'hôte, puis de partager le conteneur.
-d: courir derrière le paramètre -d va créer un gardien du conteneur ne contenant pas automatiquement connecté après (ce conteneur est créé en arrière-plan, en ajoutant -i -t si seulement deux paramètres, il se mettra automatiquement après la création conteneur).
-p: cartographie du port, le premier est un port d'hôte, qui est mis en correspondance dans l'orifice du récipient. Vous pouvez utiliser le mappage de ports multiples -p faire plus
Créer un récipient (1) en mode interactif
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
Ensuite, nous voyons la commande ps, vous pouvez voir le lancement du navire a été trouvé, l'état pour commencer l'état
Quittez le conteneur actuel
exit
(2) créer le mode de protection de type conteneur:
docker run -di --name=容器名称 镜像名称:标签
Vous devez vous identifier les moyens de conteneurs gardien:
docker exec -it 容器名称 (或者容器ID) /bin/bash
3.2.3 arrêter et démarrer le récipient
Arrêtez le récipient:
docker stop 容器名称(或者容器ID)
conteneur Début:
docker start 容器名称(或者容器ID)
3.2.4 copie de fichier
Vous pouvez utiliser la commande cp si nous avons besoin de copier le fichier dans le conteneur
docker cp 需要拷贝的文件或目录 容器名称:容器目录
Les fichiers peuvent également être copiés à partir du conteneur
docker cp 容器名称:容器目录 需要拷贝的文件或目录
3.2.5 répertoire est monté
Lorsque nous pouvons créer un conteneur, le répertoire contenant dans le répertoire sont mis en correspondance hôte, afin que nous puissions modifier le fichier hôte dans un répertoire afin d'influencer le récipient.
Créer un paramètre Ajouter conteneur -v Retour au répertoire d'accueil: conteneur, par exemple:
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
Si vous partagez un répertoire multi-niveaux, autorisations insuffisantes peuvent apparaître rapidement.
En effet, le module de sécurité SELinux autorité CentOS7 de l'interdiction, et nous avons besoin d'ajouter des paramètres --privileged = true pour résoudre le problème sans l'autorisation répertoire monté
3.2.6 Voir conteneur d'adresse IP
On peut voir le navire exécutant la commande suivante une variété de données
docker inspect 容器名称(容器ID)
Vous pouvez également effectuer la commande suivante pour sortie directe adresse IP directe
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
3.2.7 récipient suppression
Supprime le conteneur spécifié:
docker rm 容器名称(容器ID)
4 déploiement d'applications
4.1 déploiement MySQL
(1) Pull miroir mysql
docker pull centos/mysql-57-centos7
(2) créer le conteneur
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
Le mappage de port -p, hôte de format de mappage de port: exécution de conteneurs du port
-e Ajouter la MYSQL_ROOT_PASSWORD variable d'environnement au nom du mot de passe de connexion de l'utilisateur root
(3) de connexion à distance mysql
Connexion de l'IP hôte, en tant que port spécifié 33306
4.2 déploiement tomcat
(1) Tirer Miroir
docker pull tomcat:7-jre7
(2) créer le conteneur
Créer un conteneur -p indique le mappage d'adresses
docker run -di --name=mytomcat -p 9000:8080
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
4.3 déploiement Nginx
(1) Tirer Miroir
docker pull nginx
(2) créer récipient Nginx
docker run -di --name=mynginx -p 80:80 nginx
4.4 déploiement Redis
(1) Tirer Miroir
docker pull redis
(2) créer le conteneur
docker run -di --name=myredis -p 6379:6379 redis
5 Migration et sauvegarde
conteneur de stockage d'image est 5.1
Nous pouvons sauver le navire de commande suivante pour le miroir
docker commit mynginx mynginx_i
5.2 sauvegarde d'image
Nous pouvons enregistrer l'image avec la commande suivante sous forme de fichiers tar
docker save -o mynginx.tar mynginx_i
5.3 récupération d'image et de la migration
Tout d'abord nous avons retiré mynginx_img miroir et puis exécutez la commande à restaurer
docker load -i mynginx.tar
fichier d'entrée -I
Après avoir effectué à nouveau rétroviseur, vous pouvez voir l'image a été restaurée
6 Dockerfile
6.1 Qu'est-ce que Dockerfile
écriture Dockerfile est une série de commandes et de paramètres constitué de ces commandes de l'image de base et, finalement, créer une nouvelle image.
1. Pour les développeurs: fournir un environnement de développement cohérent pour l'équipe de développement,
2, pour les testeurs: Vous pouvez prendre une image miroir directe construit lors de l' élaboration ou de construire une nouvelle image en fichier Dockerfile pour commencer le travail,
3, pour le transport et le personnel d'entretien: au moment du déploiement, permet la migration transparente des applications.
6.2 Commandes communes
commandement | effet |
---|---|
DE image_name: tag | Ce qui définit l'utilisation de l'image de base pour démarrer le processus de construction |
MAINTAINER user_name | Avertissement créateur miroir |
ENV valeur clé | Définir des variables d'environnement (vous pouvez écrire plusieurs) |
commande RUN | Dockerfile est une partie de base (vous pouvez écrire plusieurs) |
ADD source_dir / fichier dest_dir / fichier | Copiez le fichier à l'hôte du conteneur, si elle est un fichier compressé, il sera extrait automatiquement après la réplication |
COPY source_dir / fichier dest_dir / fichier | Et comme ADD, mais s'il n'y a pas un fichier compressé et dézipper |
WORKDIR path_dir | Définir le répertoire de travail |
6.3 à l'aide d'un script pour créer un miroir
étapes:
(1) Créer un répertoire
mkdir –p /usr/local/dockerjdk8
(2) Télécharger jdk-8u171-linux-x64.tar.gz et téléchargé sur le serveur (machine virtuelle) dans le répertoire / usr / local / de dockerjdk8
(3) créer un fichier Dockerfile vi Dockerfile
#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER ITCAST
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
(4) Construction de la course miroir
docker build -t='jdk1.8' .
Notez le dos des espaces et des points, ne pas omettre
(5) pour établir si un miroir de vue complète
docker images
7 Docker entrepôt privé
7.1 entrepôt privé mis en place et configuration
(1) image Pull entrepôt privé (cette étape est omise)
docker pull registry
(2) entrepôt de conteneurs privé Démarrer
docker run -di --name=registry -p 5000:5000 registry
(3) Ouvrez le navigateur et entrez l'adresse http://192.168.184.141:5000/v2/_catalog voir la {"repositories":[]}
représentation de l' entrepôt privé et construire un contenu avec succès est vide
(4) daemon.json modifié
vi /etc/docker/daemon.json
Ajouter le contenu suivant, enregistrer et quitter.
{"insecure-registries":["192.168.184.141:5000"]}
Cette étape permet la confiance docker pour l'adresse de l'entrepôt privé
(5) Redémarrer le service docker
systemctl restart docker
7.2 Mirroring téléchargé sur un entrepôt privé
(1) Ce marqué comme entrepôt d'image miroir privé
docker tag jdk1.8 192.168.184.141:5000/jdk1.8
(2) contenant de recommencer PW
docker start registry
(3) marqué transfert d'image
docker push 192.168.184.141:5000/jdk1.8