Docker - Ausführliche Erklärung und Verwendung von Docker

Bevor wir über Docker sprechen, lassen Sie uns über herkömmliche Server sprechen

Der traditionelle unabhängige Server ist ein unabhängiges Hardwaregerät, das als hochkonfigurierter Computer verstanden werden kann, der im Computerraum platziert ist; er verfügt über unabhängigen Prozessor, Speicher, Festplatte, Bandbreite und andere Ressourcen sowie verschiedene Betriebssysteme und verschiedene Umgebungen

Nachteile dieses Servers:

1. Hohe Kosten (Zeitkosten, Kapitalkosten)

2. Die Anwendungsmigration ist mühselig. Es ist erforderlich, den Server neu zu kaufen, das Betriebssystem zu installieren, die Betriebsumgebung zu konfigurieren und die Anwendung bereitzustellen

Daher ist die Virtualisierungstechnologie entstanden, die hauptsächlich unterteilt wird in

Hardware-Virtualisierung (Hardware-Level-Virtualisierung)

Betriebssystemvirtualisierung (OS-Level-Virtualisierung)

Hardwarevirtualisierung ist eine Virtualisierungstechnologie, die auf Hardware ausgeführt wird. Der Kern der Technologie ist Hypervisor. Hypervisor ist eine Softwareschicht, die auf dem grundlegenden physischen Server ausgeführt wird und Hardwareressourcen wie CPU, Festplatte, Speicher usw. virtualisieren kann Das auf den virtualisierten Ressourcen installierte Betriebssystem ist die sogenannte virtuelle Maschine, wie VMWare, VirtualBox etc.

Betriebssystemvirtualisierung ist eine Virtualisierungstechnologie, die auf dem Betriebssystem ausgeführt wird. Sie simuliert mehrere verschiedene Prozesse, die auf einem Betriebssystem ausgeführt werden, und kapselt sie in einem geschlossenen Container, auch bekannt als Containerisierungstechnologie, wie z. B. Docker

VM: Hypervisor wird verwendet, um eine laufende Plattform für virtuelle Maschinen bereitzustellen und den Betrieb des Betriebssystems in jeder VM zu verwalten. Jede VM muss über ein eigenes Betriebssystem, Anwendungen und erforderliche abhängige Dateien usw. verfügen.

Docker-Container: Verwenden Sie die Docker-Engine für Planung und Isolierung, wodurch die Ressourcennutzung verbessert wird und mehr Containerinstanzen unter derselben Hardwarefunktionalität ausgeführt werden können; jeder Container hat seinen eigenen isolierten Benutzerbereich

Im Vergleich zu VM hat der Docker-Container als leichtgewichtige Virtualisierungsmethode folgende wesentliche Vorteile in der Anwendung:

1. Docker-Container können schnell gestartet und innerhalb von Sekunden gestoppt werden, was im Vergleich zu herkömmlichen virtuellen Maschinen erheblich verbessert wird

2. Docker-Container haben geringe Anforderungen an Systemressourcen, und Tausende von Docker-Containern können gleichzeitig auf demselben Host ausgeführt werden. Docker-Container erleichtern Benutzern das Abrufen und Aktualisieren von Anwendungsabbildern durch ähnliche Vorgänge wie bei Git

3. Der Docker-Container realisiert die automatische Erstellung und flexible Bereitstellung durch die Dockerfile-Konfigurationsdatei, wodurch die Arbeitseffizienz verbessert wird

4. Zusätzlich zum Ausführen der Anwendungen im Docker-Container verbraucht es im Grunde keine zusätzlichen Systemressourcen, wodurch die Anwendungsleistung sichergestellt und gleichzeitig der Systemaufwand minimiert wird.

Die folgende Abbildung lässt den Unterschied zwischen dem Docker-Container und der traditionellen VM-Methode intuitiv nachvollziehen:

1. Einführung in Docker

Docker ist eine Container-Engine für Open-Source-Anwendungen, die auf  der Go-Sprache  und Open Source in Übereinstimmung mit dem Apache2.0-Protokoll basiert

Docker ermöglicht es Entwicklern, ihre Anwendungen und Abhängigkeiten in einen leichten, tragbaren Container zu packen, der dann auf jedem gängigen Linux-Computer verteilt und auch virtualisiert werden kann.

Docker ist seit Version 17.03 in CE (Community Edition: Community Edition) und EE (Enterprise Edition: Enterprise Edition) unterteilt, wir verwenden die Community Edition.

Docker ist eine leichtgewichtige Betriebssystem-Virtualisierungslösung. Docker basiert auf der Linux Container (LXC)-Technologie, die eine standardisierte Verpackung von Software und langfristigen Umgebungen darstellt. Anwendungen sind voneinander isoliert und teilen sich ein Betriebssystem

Docker unterstützt CentOS6 und spätere Versionen

Offizielle Docker-Website: https://www.docker.com

Github-Docker-Quellcode: https://github.com/docker/docker-ce

DockerHub-Spiegellager: https://hub.docker.com/

2. Docker-Installation und Start

1. Docker-Installation

Verwenden Sie den folgenden Befehl, um zu überprüfen, ob Docker installiert ist

yum list installed | grep docker 

Einfacher Installationsbefehl ( die installierte Version von Docker ist alt, 1.13.x )

//-y 参数表示直接确认,不然会跳出一个确认框,输入Y/N
yum install docker -y

Wir können die angegebene Version von Docker wie folgt installieren 

//更新docker的yum源
yum install wget -y

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

//安装指定版本的docker:
yum install docker-ce-20.10.0 -y

Informationen zur Installation und Deinstallation finden Sie in der neuesten Dokumentation auf der offiziellen Website

Docker-Engine unter CentOS installieren | Docker-Dokumentation

Docker-Versionshinweise

Versionshinweise zur Docker-Engine | Docker-Dokumentation

Nach der Installation können Sie die folgenden drei verwenden

//注意:这里两个 横线 ‘--’
docker --version

docker version

docker -v

2. Deinstallieren

Gemäß dem Befehl view installation docker können Sie die Docker-Installationsdatei anzeigen und entfernen

Überprüfen Sie zuerst den Docker-Ausführungsstatus

systemctl status docker 

Wenn es ausgeführt wird, deaktivieren Sie es

systemctl stop docker

Zeigen Sie das von yum installierte Docker-Dateipaket an

 yum list installed |grep docker

 Zeigen Sie Docker-bezogene RPM-Quelldateien an

rpm -qa |grep docker

Löschen Sie der Reihe nach alle installierten Docker-Pakete, wie z

yum -y remove docker-ce.x86_64
yum -y remove docker-ce-cli.x86_64
yum -y remove docker-ce-rootless-extras.x86_64
yum -y remove docker-scan-plugin.x86_64

Nach dem Löschen können Sie die Docker-RPM-Quelle erneut überprüfen

Löschen Sie die Docker-Image-Datei, die sich standardmäßig im Verzeichnis /var/lib/docker befindet, verwenden Sie pwd zum Anzeigen

 

Löschen Sie das obige Docker-Verzeichnis

rm -rf /var/lib/docker

 3. Docker-Service-Informationen

Informationen zum Docker-System anzeigen

docker info

Hilfeinformationen anzeigen

docker 

 Zeigen Sie die Befehlshilfeinformationen eines Common an

docker commond --help

4. Starten und stoppen Sie den Docker-Dienst

Start-up

systemctl start docker 或者
service docker start

 stoppen

systemctl stop docker 或者
service docker stop

Neustart

systemctl restart docker 或者
service docker restart

 Zeigen Sie den Docker-Ausführungsstatus an

systemctl status docker 或者
service docker status

Docker-Prozess anzeigen

ps -ef | grep docker

5. Docker-Betriebsmechanismus

1. Starten Sie den Docker-Dienst

2. Image finden.Vor dem Ausführen des Containers prüft Docker zunächst, ob lokal ein entsprechendes Image vorhanden ist. Wenn lokal kein entsprechendes Image vorhanden ist, lädt Docker das Image aus dem Image Warehouse herunter

(1) Suchen Sie auf der offiziellen Docker-Hub-Website nach dem zu verwendenden Bild

Docker-Spiegellager https://registry.hub.docker.com/

Laden Sie im Allgemeinen das offizielle Bild mit dem Logo des offiziellen Bildes herunter

 (2) Verwenden Sie direkt die Befehlszeile, um den Suchbefehl zu verwenden, z

docker search tomcat

STERNE: Anzahl der Sterne

OFFIZIELL: ob es offiziell ist 

Spiegel herunterladen

// 下面两种方式一样的,默认下载最新版  :latest 即为最新版本
docker pull tomcat
docker pull tomcat:latest

//也可下载其他版本,如
docker pull tomcat:9.0

3. Führen Sie das Image aus, starten Sie das Image, um den entsprechenden Container zu erhalten

// -d 表示后台运行
docker run -d tomcat:9.0
docker run -d docker.io/tomcat
docker run -d 镜像ID

Überprüfen Sie, ob das Tomcat-Image den Container erfolgreich startet 

ps -ef | grep tomcat

Sehen Sie sich den lokalen Spiegel an

docker images

REPOSITORY: Warenlager, z. B. docker.io/tomcat

TAG: Mirror-Tag, z. B. neueste

BILD-ID: Bild-ID

ERSTELLT: Erstellungszeit

GRÖSSE: Größe

6. Der Client greift auf den Container zu

Der Zugriff auf den Container vom Client aus erfordert eine Portzuordnung; der Docker-Container kommuniziert standardmäßig in diesem Ayong-Bridge-Modus mit dem Host und muss den IP-Port des Hosts mithilfe des Parameters -p auf den IP-Port des Containers abbilden

//映射8080 也可以,博主使用的 9090
docker run -d -p 9090:8080 tomcat:9.0
或者
docker run -d -p 9090:8080 镜像ID

7. Geben Sie den Docker-Container ein

docker exec -it 镜像ID /bin/bash

Container verlassen: exit

3. Docker-Kernkomponenten

Docker verwendet den Client-Server-Architekturmodus (C/S) und verwendet die Remote-API-Verwaltung, um Docker-Container zu erstellen

Docker-Container werden über Docker-Images erstellt

Die Beziehung zwischen Bild und Container ähnelt der Beziehung zwischen Klasse und Objekt in der objektorientierten Programmierung

Docker objektorientierte
Spiegelbild Art
Container Objekt

Docker umfasst drei Kernelemente

Spiegel (Bild) , Container (Container) , Lager (Repository)

1. Spiegelbild

Ein Docker-Image ist eine schreibgeschützte Vorlage, die zum Erstellen eines Docker-Containers verwendet wird. Es ist ein bisschen wie die Installations-CD des Betriebssystems

Das Docker-Image kann als spezielles Dateisystem betrachtet werden, das neben der Bereitstellung von Programmen, Bibliotheken, Ressourcen, Konfigurations- und anderen Dateien, die für die Ausführung des Containers erforderlich sind, auch einige für die Ausführung vorbereitete Konfigurationsparameter enthält (z. B. anonyme Volumes, Umgebungsvariablen usw.), Benutzer usw.). Bilder enthalten keine dynamischen Daten, und ihre Inhalte werden nach ihrer Erstellung nicht geändert.

Das Spiegelbild besteht aus vielen Schichten von Dateisystemen, die untere ist ein Boot-Dateisystem bootfs, die zweite Schicht ist ein Root-Dateisystem rootfs, das Root-Dateisystem ist normalerweise eine Art Betriebssystem, wie Centos, Ubuntu, auf Oben auf dem Root-Dateisystem und Es gibt viele Schichten von Dateisystemen, die zusammengestapelt werden, um ein Docker-Image zu bilden

 Überblick über Spiegelungsbefehle

1. Laden Sie das Bild herunter

// 下面两种方式一样的,默认下载最新版  :latest 即为最新版本
docker pull tomcat
docker pull tomcat:latest

//也可下载其他版本,如
docker pull tomcat:9.0

2. Zeigen Sie das heruntergeladene Bild an

 Latest ist das Image-Tag, das die neueste Image-Version angibt

docker images
或者
docker images tomcat

Holen Sie sich die Spiegelmethode

(1) Suche und Download des offiziellen Hafenlagers

(2) Build über Dockerfile

 Wenn kein offizielles Image vorhanden ist, wird es über die Dockerfile-Datei erstellt

3. Führen Sie das Image aus, um den Container abzurufen

Der Zugriff auf den Container vom Client aus erfordert eine Portzuordnung; der Docker-Container kommuniziert standardmäßig in diesem Ayong-Bridge-Modus mit dem Host und muss den IP-Port des Hosts mithilfe des Parameters -p auf den IP-Port des Containers abbilden

//映射8080 也可以,博主使用的 9090
docker run -d -p 9090:8080 tomcat:9.0
或者
docker run -d -p 9090:8080 镜像ID

Sehen Sie sich den Tomcat-Prozess an 

ps -ef | grep tomcat

4. Zeigen Sie den Status des Container-Images an

//查看运行中容器
docker ps

//查看所有容器
docker ps -a

CONTAINER-ID: Eine eindeutige Kennung für jeden Container, die automatisch generiert wird. ähnlich einem Primärschlüssel in einer Datenbank

IMAGE : Der Name des Images, das zum Erstellen des Containers verwendet wird

BEFEHL: Der Befehl beim Ausführen des Containers

ERSTELLT: wann der Container erstellt wurde

STATUS: Der Laufstatus des Containers, Up 8 Monate bedeutet, dass der Container seit 8 Monaten läuft
        -created (erstellt)
        -restarting (restarting)
        -running (running)
        -removing (migration)
        -paused (paused)
        -exited ( gestoppt )
        -dead (Tod)
PORTS: Portinformationen, die vom Container geöffnet wurden.
NAME: Der Alias ​​des Containers, der beim Ausführen des Containers mit --name angegeben werden kann, um docker run auszuführen

5. Betreten Sie den Behälter

docker exec -it 镜像ID /bin/bash

Container verlassen: exit

6. Löschen Sie das Spiegelbild

docker rmi 镜像ID
或者
docker rmi tomcat:9.0

2. Behälter

Ein Container ist eine Laufzeitinstanz eines Images. Genau wie beim Starten einer VM aus einer Vorlage für virtuelle Maschinen können Benutzer auch einen oder mehrere Container aus einem einzelnen Image starten.

Jeder Container ist voneinander isoliert, um die Plattformsicherheit zu gewährleisten. Ein Container kann als einfache Version eines Linux-Systems betrachtet werden

Docker verwendet Container zum Ausführen von Anwendungen, das Image ist schreibgeschützt und der Container erstellt beim Start eine beschreibbare Ebene als oberste Ebene

1. Es gibt zwei Möglichkeiten, den Container zu starten

(1) Erstellen Sie einen neuen Container basierend auf dem Image, um zu beginnen

docker run -d tomcat

(2) Starten Sie den Container im beendeten Zustand neu

docker start 容器id 或 容器名
或者
docker restart 容器id 或 容器名
//查看运行中容器
docker ps

//查看所有容器
docker ps -a

2. Stoppen Sie den Behälter

docker stop 容器ID 或 容器名

 3. Löschen Sie den Container

Notiz:

Beim Löschen eines Containers muss sich der Container in einem gestoppten Zustand befinden, ansonsten wird ein Fehler gemeldet

docker stop 容器ID 或 容器名

docker rm 容器ID 或 容器名

4. Betreten Sie den Behälter

docker exec -it 容器ID 或 容器名 /bin/bash

5. Zeigen Sie weitere Informationen zum Container an

docker inspect 容器ID 或 容器名

 6. Beenden Sie alle laufenden Container

docker stop $(docker ps -q) 

7. Alle Container löschen:

docker rm $(docker ps -aq)

8. Ein Befehl zum Deaktivieren und Löschen des Containers

docker stop $(docker ps -q) & docker rm-f $(docker ps -aq)

3. Aufbewahrungsort

Repository ist ein Ort, an dem Bilder zentral gespeichert werden.Hier ist ein Konzept zu unterscheiden, das heißt, Warehouse und Warehouse-Server (Registry) sind zwei verschiedene Dinge.Wie der oben erwähnte Docker Hub ist es ein Warehouse-Server, der offiziell von Docker bereitgestellt wird , aber in der Tat Manchmal müssen wir diese beiden Konzepte nicht zu sehr unterscheiden

Docker Hub ist das offizielle zentrale Image Warehouse, das von Docker eingerichtet wurde, und es ist auch das Standard-Image-Warehouse der Docker Engine. Daher ist die Verwendung von Docker Hub die erste Wahl für Entwickler, um Images zu teilen. Die Images gängiger Service-Software sind in Docker zu finden Hub

Lagerhäuser werden in öffentliche Lagerhäuser und private Lagerhäuser unterteilt. Öffentliche Lagerhäuser beziehen sich im Allgemeinen auf Docker Hub

Wir können nach den Bildern suchen, die wir in Dockers Hub verwenden müssen

 Das häufig verwendete Spiegellager in China ist das Alibaba Cloud Container Mirror Warehouse

https://dev.aliyun.com/

4. Docker-Installations-MySQL-Beispiel

(1) Laden Sie das MySQL-Image herunter

docker pull mysql:latest

(2) Führen Sie das MySQL-Image aus, um den Container abzurufen und den Port zuzuordnen

docker run -d -p 3306:3306 -e MYSQL_DATABASE=mydb -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

-p 3306:3306  : Ordnen Sie Port 3306 des Containerdienstes Port 3306 des Hosts zu, und der externe Host kann über die Host-IP: 3306 direkt auf den MySQL-Dienst zugreifen

MYSQL_DATABASE=mydb : Legen Sie den Datenbanknamen fest, der vom MySQL-Dienst verwendet wird

MYSQL_ROOT_PASSWORD=123456 : Legt das Passwort des Root-Benutzers des MySQL-Dienstes fest

Nach Docker Run können Sie auch Befehlen wie --restart always folgen

1. --restart=always: Beim Neustart von Docker kann der Container automatisch gestartet werden

docker run --restart spezifische Parameterwertdetails

no - den Container nicht neu starten, wenn der Container beendet wird;

on-failure – startet den Container nur neu, wenn er mit einem Nicht-Null-Status beendet wird;

        –restart=on-failure:10 : Gibt maximal 10 Neustarts an

always - starten Sie den Container unabhängig vom Exit-Status neu;
 

2. --privileged=true: Mounten Sie das Host-Verzeichnis und melden Sie keine Berechtigungsprobleme 

Wenn --restart=always nicht hinzugefügt wird, wenn Docker ausgeführt wird und der Docker-Container bereits ausgeführt wird, führen Sie den folgenden Befehl aus 

# demo : 你的容器名称
docker update –-restart=always demo

(3) in den Behälter

docker exec -it 容器ID或者mysql名 /bin/bash

(4) Melden Sie sich bei MySQL an

mysql -u root -p

Kennwort ändern

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'

Berechtigung zum Hinzufügen des Remote-Benutzeranmeldungszugriffs

CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';

5. Docker-Installationsbeispiel für SQL Server

Suchen Sie im Docker-Hub nach „Microsoft SQL Server“.

https://registry.hub.docker.com/_/microsoft-mssql-server

(1) Laden Sie das SQL Server-Image herunter

docker pull mcr.microsoft.com/mssql/server:2019-latest

  

(2) Führen Sie das SQL Server-Image aus, um den Container abzurufen und den Port zuzuordnen

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest

4. Benutzerdefiniertes Docker-Image

Dockerfile ist eine Textdatei, die zum Erstellen eines Docker-Images verwendet wird, und eine Dockerfile besteht aus zeilenweisen Befehlsanweisungen

1. Grundlegende Struktur von Dockerfile

Grundlegende Bildinformationen

Betreuerinformationen

Anleitung zum Spiegelbetrieb

Anweisungen ausführen, wenn der Container gestartet wird

2. Dockerfile-Anweisung

(1) VON

Die FROM-Direktive wird verwendet, um das Basis-Image des zu erstellenden Images anzugeben. Es ist normalerweise die erste Anweisung in einer Dockerfile

Das Format ist: FROM <Bild> oder FROM <Bild>:<Tag>

(2) WARTER

Informationen zum designierten Betreuer

Das Format ist: MAINTAINER <Name>

(3) ENV 

Geben Sie Umgebungsvariablen an

ENV <Schlüssel> <Wert>

(4) HINZUFÜGEN oder KOPIEREN

Kopieren Sie die Datei oder das Verzeichnis in den angegebenen Pfad im Container

HINZUFÜGEN <Quelle> <Ziel>

COPY <Quelle> <Ziel>

Der ADD-Befehl ähnelt COPY (unter den gleichen Anforderungen lautet die offizielle Empfehlung, COPY zu verwenden).

Vorteile von ADD: Wenn <Quelldatei> eine tar-komprimierte Datei ist und das Komprimierungsformat gzip, bzip2 und xz ist, wird sie automatisch nach <Zielpfad> kopiert und dekomprimiert

Nachteil von ADD: Tar-Archive können nicht ohne Dekomprimierung kopiert werden. Macht den Image-Build-Cache ungültig, was Image-Builds verlangsamen kann. Ob es verwendet werden soll oder nicht, kann danach bestimmt werden, ob eine automatische Dekomprimierung erforderlich ist

(5) BELICHTUNG

Beschreiben Sie die Portnummer, die vom Docker-Servercontainer verfügbar gemacht wird, und ordnen Sie den Port beim Starten des Containers über -p zu

Das Standardprotokoll ist  tcp  , wenn es sich um  ein udp- Protokoll handelt, müssen Sie udp  später  hinzufügen  , z. B.  80/udp

EXPOSE <port> [<port>/<protokoll>...]

EXPOSE 8080, was darauf hinweist, dass der Container Port 8080 zur Laufzeit bereitstellt und dass beim Starten des Containers eine Portzuordnung erforderlich ist

(6) LAUFEN

Führen Sie Befehle basierend auf dem aktuellen Image aus und erstellen Sie eine neue Image-Ebene, die normalerweise zum Aktualisieren oder Installieren von Software verwendet wird

RUN <Befehl>

(7)CMD

Geben Sie den Befehl an, der beim Starten des Containers ausgeführt werden soll. Jede Docker-Datei kann nur einen CMD-Befehl haben. Wenn Sie mehrere Befehle angeben, wird nur der letzte ausgeführt.

Wenn beim Starten des Containers ein Ausführungsbefehl angegeben wird, wird der von CMD angegebene Befehl überschrieben

Das folgende Dockerfile-Beispiel

Dockefile文件样例:
FROM XXX/jdk:8
MAINTAINER docker_user
ENV JAVA_ HОМE /usr/local/java
ADD apache -tomcat-8.0.32. tar.gz /usr/local/
RUN mv apache-tomcat-8.0.32 tomcat8
ÉXPOSE 8080
RÚN chmod u+x /usr/local/tomcat8/bin/* .sh
CMD /usr/ local/tomcat8/bin/catalina.sh start

1. Passen Sie das JDK-Image an

FROM centos:latest
MAINTAINER admin
ADD jdk-8u121-linux-x64.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_121
ËNV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
CMD java -version

Bild aufbauen

Verwenden Sie das Dockerfile im aktuellen Verzeichnis, um ein Image zu erstellen und das Label festzulegen

"." steht für das aktuelle Verzeichnis

Der Parameter -t legt die Bezeichnung fest

docker build -t admin_jdk1.8.0_121 .

 2. Passen Sie das Tomcat-Bild an

FROM admin_jdk1.8.0_121
MAÌNTAINER admin
ADD apache-tomcat-8.5.24.tar.gz /usr/local/
ENV CATALINA_ HОME/usr/local/apache-tomcat-8.5.24
ENV PATH $PATH:$CATALINA_ HOME/Iib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.24/bin/catalina.sh run

3. Benutzerdefiniertes MySQL-Image

FROM centos:centos8
MAINTAINER admin
RUN yum install mysql-server mysqI -y
RUN /etc/init.d/mysqld start &&\
    mysql -e "grant all privileges on *.* to 'root'@'%' identified by '123456' WITH
GRANT OPTION ;" &&\
    mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456'WITH GRANT OPTION ;" &&\
    mysql -uroot -p123456 -e "show databases;"
EXPOSE 3306
CMD /ûsr/bin/mysqld_safe

3. Veröffentlichen Sie das Image im Alibaba Cloud Image Warehouse

Alibaba Cloud Mirror Warehouse

https://dev.aliyun.com/

Registrieren Sie sich und melden Sie sich beim Aliyun-Konto an; Taobao- und Alipay-Konten können sich bei der Konsole oder dem Management Center anmelden, direkt nach [Container Mirroring Service] suchen, [Strength List] auswählen, Sie können ein [Mirror Warehouse] erstellen, Sie müssen zuerst einen [Namensraum] erstellen

 (1) Melden Sie sich bei der Alibaba Cloud Docker-Registrierung an

docker login [email protected] registry.cn-hangzhou.aliyuncs.com

Der Benutzername zum Anmelden ist das Aliyun-Konto, und das Passwort ist das Passwort, das bei der Aktivierung des Dienstes festgelegt wurde

(2) Pushen Sie das Image in die Registry

docker tag [lmageld] registry.cn-hangzhou.aliyuncs.com/123test/1234test:[镜像版本号心]
docker push registry.cn-hangzhou.aliyuncs.com/123test/1234test:[镜像版本号]

Ersetzen Sie im Beispiel die Parameter [lmageld] und [Bildversionsnummer] entsprechend den tatsächlichen Bildinformationen

Spiegelbeschleuniger

/etc/docker/daemon.json

Fünf, Docker-Bereitstellungsanwendung

1. Stellen Sie ein SpringBoot-Projekt bereit

(1) Packen Sie das Springboot-Programm in jar oder war

(2) Laden Sie das JAR- oder WAR-Paket in ein Linux-Verzeichnis wie /root/docker hoch 

(3) Definieren Sie die Dockerfile-Datei und erstellen Sie ein Projekt-Image

2. Definieren Sie das Dockerfile des JAR-Pakets

FROM admin_jdk1.8.0_121
MAINTAINER admin
ADD springboot-web-1.0.0.jar /opt
RUN chmod +X /opt/springboot-web-1.0.0.jar
CMD java -jar /opt/springboot-web-1.0.0.jar

3. Erstellen Sie das Programm-Image des JAR-Pakets

构建镜像: docker build -t springboot-web-jar .
运行容器: docker run -d 镜像ID

Nach dem Ausführen des Containers können wir das Betriebsprotokoll anzeigen

docker logs -f --tail=100 容器名称

4. Das JAR-Paketprogramm hängt von der Containerumgebung ab

运行Redis容器: docker run -p 6379:6379 -d redis
运行MySQL 容器: docker run -p 3306:3306 -e MYSQL_DATABASE=mydb -e
MYSQL_ ROOT_ _PASSWORD=123456 -d mysql:latest

Nachdem der MySQL-Container gestartet wurde, können wir über die Remote-IP + -Port und das Benutzerpasswort auf die Datenbank zugreifen. Wenn der MySQL-Container zu diesem Zeitpunkt geschlossen wird, gehen die Daten verloren.

Daher müssen Sie nach dem Ändern des Containers speichern

docker commit 容器id xxx(镜像名:tagxxx)

如:
docker commit 容器ID admin_mysql_new

Wir können es als eine festgeschriebene Transaktion in der Datenbank verstehen, und eine nicht festgeschriebene Transaktion führt dazu, dass die Daten nicht erfolgreich gespeichert werden 

Ich denke du magst

Origin blog.csdn.net/MinggeQingchun/article/details/123411872
Empfohlen
Rangfolge