Technologieaustausch

Docker-Zusammenfassung

2024-07-12

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

Bereiten Sie die Umgebung vor:

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

1. Docker-Vorschau


Docker-bezogene Dokumente:

  • Offizielle Website-Adresse von Docker: https://www.docker.com/
  • Adresse der Docker-Dokumentation: https://docs.docker.com/
  • Docker-Image-Warehouse: https://hub.docker.com/

Glücklicher Docker

1. Was ist Docker? Es handelt sich um eine Open-Source-Container-Engine, die Container einfach verwalten kann. Die Container werden mithilfe eines Sandbox-Mechanismus voneinander isoliert.

2. Welches Problem löst Docker: Löst das Migrationsproblem der Softwareumgebung.

3. Der Unterschied zwischen Containern und virtuellen Maschinen:

  • Container: Es handelt sich um eine Abstraktion einer Anwendung (Zusammenpacken von Code und Abhängigkeiten), die weniger Ressourcen beansprucht, schnell startet, leichtgewichtig und flexibel ist.
  • Virtuelle Maschine: Es handelt sich um eine Abstraktion physischer Hardware (die einen Server in mehrere Server umwandelt). Sie beansprucht viele Ressourcen und ist sperrig und leistungsstark.

Bild-20240706011000322

4. Docker-Speicher:

  • Mount-Verzeichnis, Beispiel: -v /宿主机目录:容器目录
  • Datenvolumen-Mapping, Beispiel:数据卷:容器目录

5. Docker-Netzwerk: Erstellen Sie ein benutzerdefiniertes Netzwerk, um den Hostnamenzugriff als stabilen Domänennamen zu erreichen. (Ermöglicht Containern im selben Netzwerk die Kommunikation untereinander)

#示例
#自定义网络
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. Installieren Sie Docker


Dieser Artikel basiert auf der Installation der Ubuntu-Umgebung. Wenn Ihnen die Berechtigungen fehlen, fügen Sie einfach sudo hinzu.

1. Schalten Sie die Firewall aus (es ist nicht erforderlich, den Port manuell für den späteren externen Zugriff freizugeben, was zum Testen praktisch ist).

sudo ufw disable

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

2. Docker installieren

#卸载旧版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. Allgemeine Docker-Befehle


Bild-20240706032721566

1. Statusverwaltung des Docker-Dienstes:

  • systemctl status docker: Zeigt den Betriebsstatus von Docker an
  • systemctl stop docker: Docker schließen
  • systemctl start docker: Docker starten
  • systemcl docker neu starten: Docker neu starten
  • systemctl enable docker: Docker so einstellen, dass er beim Booten automatisch startet

2. Docker-Image-Verwaltung:

  • Suchbild: Docker-Suchbildname
  • Ziehen Sie das Bild: docker pull Bildname: tag Wenn kein Tag angegeben ist, wird das letzte Bild gezogen
  • Bilder anzeigen: Docker-Bilder
  • Bild löschen: Docker RMI Bildname: Tag

3. Docker-Containerverwaltung:

  • Erstellen Sie einen Container: docker run -di --name=Containername Bildname: Tag
  • Schließen Sie den Container: Name des Docker-Stopp-Containers
  • Starten Sie den Container: Name des Docker-Startcontainers
  • Container löschen: Name des Docker-RM-Containers
  • Sehen Sie sich den Container an:
    • docker ps -a Alle Container anzeigen, einschließlich derer, die nicht ausgeführt werden
    • Docker ps, um laufende Container anzuzeigen
  • Geben Sie den Container ein: docker exec -it Containername/bin/bash

4. Docker-Datenvolumen:

  • Datenvolumen: Es handelt sich um einen von Docker verwalteten Ordner.

  • Verwendung von Datenvolumes: Sie können ein Datenvolume an einen Pfad in einem Container binden, um eine bidirektionale automatische Übertragung von Dateien zwischen dem Container und dem Host zu realisieren.

    Legen Sie die Datei im Datenvolumen des Hosts ab: Docker synchronisiert die Datei automatisch mit dem Container

    Wenn sich die Dateien im Container ändern: Docker synchronisiert sie automatisch mit dem Datenvolumen des Hosts.

  • Befehle für den Betrieb des Datenvolumens:

    Datenvolumes auflisten: Docker-Volume ls

    Erstellen Sie ein Daten-Volume: Docker-Volume Name des Daten-Volumes erstellen

    Details zum Daten-Volume anzeigen (tatsächlicher Pfad): Docker-Volume-Inspect-Daten-Volume-Name

    Daten-Volume löschen: Docker-Volume-RM-Daten-Volume-Name

  • Erstellen Sie den Container und binden Sie das Datenvolumen:

    docker run -di --name=Containername -v Datenträgername: Pfad im Container-Image-Name: Tag

    Docker run -di --name=Containername -v Pfad im Host: Pfad im Container-Image-Name: Tag

    Hinweis: Alle Pfade im Parameter -v müssen absolute Pfade sein.

5. Spiegelsicherung:

  • Bild exportieren: Docker save -o Dateiname Bildname
  • Laden Sie das Bild: Docker Load -i xxx.tar

4. Docker-Datei


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

Dockerfile-Rolle: Benutzerdefinierte Images erstellen.

Dockerfile basiert auf einem Basisbild und schreibt eine Reihe von Docker-Anweisungen. Durch diese Anweisungen wird schließlich Schicht für Schicht ein Zielbild erstellt.

Allgemeine AnweisungenWirkung
AUSGeben Sie die Image-Basisumgebung an
LAUFENFühren Sie einen benutzerdefinierten Befehl aus
CMDBefehl oder Parameter zum Starten des Containers
ETIKETTBenutzerdefinierte Etiketten
EXPONIERENGeben Sie den exponierten Port an
UmweltUmgebungsvariablen
HINZUFÜGENFügen Sie dem Bild Dateien hinzu
KOPIERENKopieren Sie Dateien in das Bild
EINSTIEGSPUNKTContainer-Fix-Startbefehl
VOLUMENDatenvolumen
BENUTZERGeben Sie Benutzer und Benutzergruppen an
ARBEITSVERZEICHNISGeben Sie das Standardarbeitsverzeichnis an
ARGGeben Sie Build-Parameter an

Beispiel:

#编写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. Service-Orchestrierung


Service-Orchestrierung oder Container-Orchestrierung: Verwalten Sie Container stapelweise nach bestimmten Geschäftsregeln.

Docker Compose ist ein Orchestrierungstool zum Definieren und Ausführen mehrerer Docker-Container.

Mit einem Befehl können mehrere Container gestartet werden. Es löst hauptsächlich das Problem der Verwaltung und Orchestrierung von Containern.

Die Verwendung von Docker Compose erfolgt in drei Schritten:

  1. Verwenden Sie Dockerfile, um die laufende Umgebung zu definieren (wenn Sie bereits über einen Spiegel verfügen, können Sie diesen Schritt weglassen)
  2. verwendendocker-compose.ymlDefinieren Sie die Dienste, aus denen die Anwendung besteht
  3. laufendocker-compose up -dAnwendung starten

Docker-Compose installieren:

# 下载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

Wenn Sie Docker-Compose deinstallieren möchten, können Sie den folgenden Befehl ausführen:

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

Allgemeine Befehle für 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

Beispiel:

1. Erstellen Sie ein Docker-Compose-Verzeichnis

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

2. Schreiben Siedocker-compose.yamldokumentieren

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. Starten

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

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