Partage de technologie

Résumé du Docker

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Préparez l’environnement :

  • VMware17
  • Ubuntu 18.04 (LTS) : https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso

1. Aperçu du Docker


Documents relatifs à Docker :

  • Adresse du site officiel de Docker : https://www.docker.com/
  • adresse de la documentation Docker : https://docs.docker.com/
  • entrepôt d'images Docker : https://hub.docker.com/

Docker heureux

1. Qu'est-ce que Docker : il s'agit d'un moteur de conteneur open source qui peut facilement gérer les conteneurs, et les conteneurs sont isolés les uns des autres à l'aide d'un mécanisme de bac à sable.

2. Quel problème Docker résout-il : résoudre le problème de migration de l'environnement logiciel.

3. La différence entre les conteneurs et les machines virtuelles :

  • Conteneur : Il s'agit d'une abstraction d'une application (regroupant le code et les dépendances), consommant moins de ressources, démarrant rapidement, légère et flexible.
  • Machine virtuelle : il s'agit d'une abstraction du matériel physique (transformer un serveur en plusieurs serveurs). Elle consomme beaucoup de ressources et est volumineuse et puissante.

image-20240706011000322

4. stockage Docker :

  • Répertoire de montage, exemple : -v /宿主机目录:容器目录
  • Mappage de volumes de données, exemple :数据卷:容器目录

5. Réseau Docker : créez un réseau personnalisé pour accéder au nom d'hôte en tant que nom de domaine stable. (Permet aux conteneurs sur le même réseau de communiquer entre eux)

#示例
#自定义网络
docker network create mynet
#主节点
docker run -d -p 6379:6379 
-v /app/rd1:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=master 
-e REDIS_PASSWORD=123456 
--network mynet --name redis01 
bitnami/redis

#从节点
docker run -d -p 6380:6379 
-v /app/rd2:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=slave 
-e REDIS_MASTER_HOST=redis01 
-e REDIS_MASTER_PORT_NUMBER=6379 
-e REDIS_MASTER_PASSWORD=123456 
-e REDIS_PASSWORD=123456 
--network mynet --name redis02 
bitnami/redis
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2. Installez Docker


Cet article est basé sur l'installation de l'environnement Ubuntu. Si vous manquez d'autorisations, ajoutez simplement sudo devant.

1. Désactivez le pare-feu (il n'est pas nécessaire d'exposer manuellement le port pour un accès externe ultérieur, ce qui est pratique pour les tests)

sudo ufw disable

#关闭防火墙:sudo ufw disable
#查看防火墙状态:sudo ufw status
#开启防火墙:sudo ufw enable
  • 1
  • 2
  • 3
  • 4
  • 5

2. Installer le menu fixe

#卸载旧版docker
sudo apt-get remove docker docker-engine docker.io containerd runc

#更新软件包
sudo apt-get update

#安装一些工具
sudo apt-get install 
    apt-transport-https 
    ca-certificates 
    curl 
    gnupg-agent 
    software-properties-common

#安装docker
sudo apt install docker.io 

#验证dokcer是否安装成功
docker --version

#启动& 开机启动docker; enable + start 二合一
sudo systemctl enable docker --now

#配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF

#重新加载配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

3. Commandes Docker courantes


image-20240706032721566

1. Gestion du statut du service docker :

  • systemctl status docker : afficher l'état d'exécution du docker
  • systemctl arrêter le docker : fermer le docker
  • systemctl start docker : démarrer le docker
  • systemcl redémarrer docker : redémarrer docker
  • systemctl activate docker : configurer Docker pour qu'il démarre automatiquement au démarrage

2. Gestion des images Docker :

  • Image de recherche : nom de l'image de recherche Docker
  • Extraire l'image : docker pull Nom de l'image : tag Si la balise n'est pas spécifiée, la dernière sera extraite
  • Afficher les images : images du menu fixe
  • Supprimer l'image : nom de l'image docker rmi : balise

3. Gestion des conteneurs Docker :

  • Créez un conteneur : docker run -di --name=nom du conteneur nom de l'image : tag
  • Fermez le conteneur : nom du conteneur docker stop
  • Démarrer le conteneur : nom du conteneur de démarrage du docker
  • Supprimer le conteneur : nom du conteneur docker rm
  • Visualisez le conteneur :
    • docker ps -a Afficher tous les conteneurs, y compris ceux qui ne sont pas en cours d'exécution
    • docker ps pour afficher les conteneurs en cours d'exécution
  • Entrez le conteneur : docker exec -it nom du conteneur/bin/bash

4. Volume de données Docker :

  • Volume de données : C'est un dossier géré par docker.

  • L'utilisation de volumes de données : vous pouvez lier un volume de données à un chemin dans un conteneur pour réaliser un transfert automatique bidirectionnel de fichiers entre le conteneur et l'hôte.

    Placez le fichier dans le volume de données de l'hôte : Docker synchronisera automatiquement le fichier avec le conteneur

    Si les fichiers du conteneur changent : docker les synchronisera automatiquement avec le volume de données de l'hôte.

  • Commandes d'opération de volume de données :

    Liste des volumes de données : docker volume ls

    Créer un volume de données : le volume Docker crée le nom du volume de données

    Afficher les détails du volume de données (chemin réel) : le volume Docker inspecte le nom du volume de données

    Supprimer le volume de données : nom du volume de données docker volume rm

  • Créez le conteneur et liez le volume de données :

    docker run -di --name=nom du conteneur -v nom du volume de données : chemin dans le nom de l'image du conteneur : balise

    docker run -di --name=nom du conteneur -v chemin dans l'hôte : chemin dans le nom de l'image du conteneur : balise

    Remarque : Tous les chemins du paramètre -v doivent être des chemins absolus.

5. Sauvegarde miroir :

  • Exporter l'image : docker save -o nom de fichier nom de l'image
  • Charger l'image : dockerload -i xxx.tar

4. Dockerfile


Documentation : https://docs.docker.com/reference/dockerfile/

Rôle Dockerfile : créer des images personnalisées.

Dockerfile est basé sur une image de base et écrit une série d'instructions Docker. Chaque instruction construit une couche d'image couche par couche, une image cible est finalement construite.

Instructions communeseffet
DEPUISSpécifier l'environnement de base de l'image
COURIRExécuter une commande personnalisée
CMDCommande ou paramètres de démarrage du conteneur
ÉTIQUETTEÉtiquettes personnalisées
EXPOSERSpécifier le port exposé
ENVVariables d'environnement
AJOUTERAjouter des fichiers à l'image
COPIECopier les fichiers dans l'image
POINT D'ACCÈSCommande de démarrage fixe du conteneur
VOLUMEvolume de données
UTILISATEURSpécifier les utilisateurs et les groupes d'utilisateurs
RÉPERTOIRE DE TRAVAILSpécifier le répertoire de travail par défaut
ARGSpécifier les paramètres de construction

Exemple:

#编写dockerfile文件
vim Dockerfile
FROM openjdk:17
LABEL author=aopmin
COPY app.jar /app.jar   #把jar包复制到容器的根目录下
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]  #运行命令

# 构建镜像
docker bulid -f Dockerfile -t 镜像名:tag .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5. Orchestration des services


Orchestration de services ou orchestration de conteneurs : gérez les conteneurs par lots selon certaines règles métier.

Docker Compose est un outil d'orchestration permettant de définir et d'exécuter plusieurs conteneurs Docker.

Plusieurs conteneurs peuvent être démarrés avec une seule commande. Il résout principalement le problème de la gestion et de l’orchestration des conteneurs.

L'utilisation de Docker Compose comporte trois étapes :

  1. Utilisez Dockerfile pour définir l'environnement d'exécution (si vous disposez déjà d'un miroir, vous pouvez omettre cette étape)
  2. utiliserdocker-compose.ymlDéfinir les services qui composent l'application
  3. courirdocker-compose up -dDémarrer l'application

Installez docker-compose :

# 下载docker compose
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 设置权限
chmod +x /usr/local/bin/docker-compose

# 查看版本 
docker-compose -version
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Si vous souhaitez désinstaller docker-compose, vous pouvez exécuter la commande suivante :

# docker compose是二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
  • 1
  • 2

Commandes courantes pour docker-compose :

# !!!注意:必须先切换到`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!

#创建容器并后台启动
docker-compose up -d

#直接启动容器
docker-compose start

#其它命令:
docker-compose help # 查看帮助
docker-compose stop  # 停止容器
docker-compose start # 启动容器
docker-compose restart # 重启容器
docker-compose rm # 删除已停止的容器
docker-compose down # 停止并删除容器
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Exemple:

1. Créez le répertoire docker-compose

mkdir ~/docker-compose
cd ~/docker-compose
  • 1
  • 2

2. Écrivezdocker-compose.yamldocument

version: "3.0"
services:
  redis:
    container_name: redis 
    image: redis:5.0
    ports:
      - 6379:6379
  nginx:
    container_name: nginx
    image: nginx:1.14.2
    ports:
      - 80:80
    volumes:
      - /root/volumes/nginx/html:/usr/share/nginx/html
  tomcat:
    container_name: tomcat
    image: tomcat:8.5.88
    ports:
      - 8080:8080
    volumes:
      - /root/volumes/tomcat/webapps:/usr/local/tomcat/webapps
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3. Commencez

# !!!注意:必须先切换到有`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!
cd ~/docker-compose

# docker-compose up -d 以守护进程方式创建并启动容器
docker-compose up -d
  • 1
  • 2
  • 3
  • 4
  • 5