[Netzwerksicherheit --- Docker] Installieren Sie Docker auf Kali, installieren Sie Docker auf CentOS, detaillierte Erklärung des Docker-Befehls

1. Das Konzept von Docker verstehen

1-1 Was ist Docker?

Docker ist eine Software, die unter Linux und Windows läuft und zum Erstellen, Verwalten und Orchestrieren von Containern verwendet wird; die Docker-Plattform ist eine Software-Containerisierungsplattform und eine Open-Source-Anwendungscontainer-Engine, die es Entwicklern ermöglicht, ihre Anwendungen sowie Abhängigkeitspakete in eine zu packen Durch ein tragbares Image kann auch eine Virtualisierung erreicht werden, und es gibt keine Schnittstellen zwischen Containern.

Unsere allgemeinen Schritte zur Installation von Software bestehen darin, das komprimierte Paket herunterzuladen ---- entpacken ---- installieren ----- ausführen. Manchmal finden wir es umständlich und ineffizient. Gibt es eine Technologie, mit der die Software schnell installiert und ausgeführt werden kann? Die Docker-Technologie bietet uns also solchen Komfort

1-2 Was ist Spiegelung?

Docker-Remote-Image-Warehouse-URL:

https://hub.docker.com/icon-default.png?t=N7T8https://hub.docker.com/

Ein Spiegel ist eine von anderen installierte Software. Wir können sie direkt aus dem Remote-Spiegellager herunterladen und ausführen, sodass kein Dekomprimierungsprozess erforderlich ist.

Die lokal heruntergeladenen Bilder werden als lokale Bilder (Images) bezeichnet, und nachdem die heruntergeladenen Bilder ausgeführt wurden, werden sie als Container (Container) bezeichnet.

Oder das Remote-Image kann direkt mit einem Befehl heruntergeladen und direkt in einem Container ausgeführt werden;

1-3 Was ist ein Container?

Nachdem das Image ausgeführt wurde, wird es als Container bezeichnet.

1-4 Docker-Client und -Server

Bei der Installation von Docker wurden Client und Server zusammen installiert. Nach dem Starten des Clients können Sie den Server mit dem Docker-Befehl bedienen, um das Image aus dem Remote-Image-Warehouse herunterzuladen und dann auszuführen

2. Docker-Installation

1-1 Installieren Sie Docker in CentOS

# centos7上面用yum安装
yum install docker -y
#启动docker
systemctl start docker
#设置开机自启
systemctl enable docker

1-2 Docker auf Kali installieren

#添加docker的gpg密钥,签名用的
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
#添加docker的apt源
echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
#更新apt缓存
apt update
#安装docker
sudo apt-get install docker docker-compose -y
或
sudo apt-get install docker.io
#安装完成之后,docker就自动启动了
systemctl status docker   
#查看docker版本
docker -v  

Ich mache eine Demo-Installation auf dem kali2022-Host

1. Fügen Sie den geheimen GPC-Schlüssel von Docker zur Signatur hinzu

curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -

Warnung Machen Sie sich darüber keine Sorgen. Wenn Sie „OK“ sehen, bedeutet das Erfolg.

2. Fügen Sie die Apt-Quelle von Docker hinzu

echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list

3. Apt-Cache aktualisieren

apt update

4. Installieren Sie Docker und Docker-Compose

Hinweis: Der Root-Benutzer muss sudo nicht hinzufügen

Installieren Sie Docker mit apt-get install docker.io

## 安装docker
sudo apt-get install docker.io

## 安装docker-compose
apt-get install docker-compose -y

Verwenden Sie apt install docker-compose

5. Überprüfen Sie die Version

docker -v
docker-compose -v

3. Allgemeine Befehle für Docker-Images

3-1 Docker-Ausführungsbefehl

Wird verwendet, um das Image aus dem Remote-Warehouse herunterzuladen und direkt auszuführen (Sie können es mit einem Befehl herunterladen und ausführen).

-d  #放后台运行
-p 端口映射 #例子: -p 宿主机端口:容器端口
--name 指定容器的名字 # docker run -it --name jaden 镜像id或者名称
--link 关联另一个容器 # 了解即可
-e MYSQL_ROOT_PASSWORD #设置容器的一些属性,了解一下即可
-it #是给运行起来的这个容器分配一个终端,就可以进入到容器内部操作了

3-1-1 Fall: Laden Sie Nginx herunter und führen Sie es aus

-d ## Im Hintergrund ausführen

-p ## Portzuordnung angeben

Weil jedes Image seinen eigenen Port hat. Das Nginx-Image ist beispielsweise standardmäßig auf Port 80 eingestellt. Dieser Port unterscheidet sich vom lokalen Port. Wir müssen den lokalen Port für die Zuordnung verwenden, z. B. für die Zuordnung des lokalen Ports 80 zum Nginx-Port 80. Hafen;

docker run -d -p 80:80 nginx

Nginx wurde heruntergeladen und ausgeführt

Browserzugriff 192.168.31.20:80

3-1-2 Laden Sie die angegebene Version von ngixn herunter

Hinweis: Der lokale Port 80 ist dem zuvor heruntergeladenen Nginx zugeordnet. In dieser Version 1.16 ist der lokale Port 81 dem gespiegelten Port 80 zugeordnet.

docker run -d -p 81:80 nginx:1.16

Nginx1.16 wurde heruntergeladen und ausgeführt

Browserzugriff 192.168.31.20:81

Ist Ihnen aufgefallen, dass beim Herunterladen eine Eingabeaufforderung erscheint?

Das Bild „nginx1.16“ konnte nicht gefunden werden. örtlich

Dies liegt daran, dass der Docker-Run-Befehl beim Herunterladen eines Bildes zunächst ermittelt, ob das Bild lokal vorhanden ist (ob es heruntergeladen wurde). Wenn nicht, lädt es es aus dem Remote-Warehouse herunter. Wenn es lokal vorhanden ist, führt es das lokal heruntergeladene Bild direkt aus Bild.

3-2 Docker-Suchbefehl

Wird zum Suchen nach Spiegeln verwendet. Manchmal möchten Sie Spiegel herunterladen, möchten aber sehen, welche Spiegel verfügbar sind. Mit diesem Befehl können Sie sie anzeigen.

docker search nginx
docker search httpd
docker search mysql

Beim Herunterladen können Sie das Bild herunterladen, das Sie herunterladen möchten, z

docker run -d  -p 3306:3306 mariadb
# 不指定版本号默认下载最新的

3-3 Docker-Images-Befehl

Sehen Sie sich die Liste der lokalen Spiegel an (welche Spiegel heruntergeladen wurden).

Da ich nur zwei platziert habe, werden zwei angezeigt.

Es gibt eine BILD-ID, die den ID-Wert dieses Bildes darstellt.

3-4 Docker-Pull-Befehl

(Was sollen wir tun, wenn wir das Image direkt herunterladen und ausführen, wenn wir den Docker-Run-Befehl verwenden, es aber nur herunterladen und nicht ausführen möchten?)

Die Docker-Pull-Funktion zieht das Remote-Image auf das lokale

docker pull httpd

Wenn Sie keine Versionsnummer angeben, wird standardmäßig die neueste Version heruntergeladen.

Überprüfen Sie die Docker-Bilder und stellen Sie fest, dass sie lokal heruntergeladen wurden.

3-5 Docker-Push-Befehl

#Laden Sie das Bild hoch, pushen Sie das Bild und übertragen Sie es in das offizielle Lager. Das Pushen ist nicht so einfach, sonst ist es voll. Zum Pushen müssen Sie sich lokal beim offiziellen Konto anmelden. Ich werde es später demonstrieren.

Wenn Sie interessiert sind, können Sie es selbst herausfinden. Ich werde nicht auf Details eingehen.URL des Docker Image Warehouse

https://hub.docker.com/

3-6 Docker RMI-Befehl

Remove iamge löscht das lokale Image (beachten Sie, dass das bereits laufende Image nicht gelöscht werden kann, ich lösche beispielsweise das bereits laufende Nginx)

docker rmi nginx:1.16

Es wurde ein Fehler gemeldet, der besagt, dass dieses Image nicht gelöscht werden kann, da der Container 42ccd25441d9 vom Image dfcfd8e9a5d3 ausgeführt wird;

Das Bild dfcfd8e9a5d3 verweist auf nginx:16 (Docker-Bilder können die Bild-ID überprüfen). Nach der Ausführung ruft es den Container auf, um die Container-ID zuzuweisen.

Hinweis: Ein Spiegel ist ein Spiegel, und ein Container ist ein Container. Dies bedeutet nicht, dass sich die Identität nach dem Ausführen des Spiegels in einen Container ändert. Es bedeutet, dass der Spiegel nach dem Ausführen des Spiegels immer noch vorhanden ist. Das kann man sagen dass ein Container generiert wird, sodass ein Spiegel mehrere unabhängige Container ausführen kann

Sie können ein Bild anhand seines Namens oder seiner BILD-ID löschen.

docker rmi httpd
或
docker rmi 7860e7628717

Mehrere Bilder können gleichzeitig gelöscht werden:

Das Format ist wie folgt: Mehrere Container können gelöscht werden, indem sie durch Leerzeichen getrennt werden.

docker rmi tomcat:latest tomcat:jre17-temurin-jammy httpd mysql

3-7 Docker-Speicherung

Exportieren Sie das Bild. Wenn wir das Bild exportieren möchten, importieren Sie es auf einen anderen Host und führen Sie es aus, zum Beispiel:

 docker save nginx:1.16 -o docker.nginx1.16.tar.gz

3-8 Docker-Last

Bilder importieren, Sie können exportierte Bilder importieren,

Hinweis: Da mein nginx:1.16 dies ausgeführt hat und es bereits lokal existiert, muss ich es vor dem Importieren löschen, da es sonst zu Konflikten kommen kann.

nginx:1.16 wurde gelöscht. Jetzt können Sie importieren, was Sie gerade exportiert haben (es wird automatisch dekomprimiert).

docker load -i docker.nginx1.16.tar.gz

4. Allgemeine Befehle für Docker-Container

4-1 Docker-Lauf

Die Funktion von „run“ besteht nicht nur darin, das Image vom Remote-Repository herunterzuladen und auszuführen. Wir haben gesagt, dass zunächst festgestellt wird, ob das Image lokal ist. Wenn es nicht lokal ist, wird es vom Remote-Repository heruntergeladen und ausgeführt. Daher , kann das lokale Image auch mit dem Befehl „run“ ausgeführt werden.

Führen Sie beispielsweise das neu importierte nginx:16 aus

docker run -d -p  83:80 nginx:1.16

Es läuft bereits, Sie können vorbeikommen und einen Blick darauf werfen

4-2 Docker-PS 

Sehen Sie sich die Liste der ausgeführten Container an

Docker ps =========== Docker-Container ls

-a ## all bedeutet, dass alle Container angezeigt werden (Container, die nach der Ausführung gestoppt werden, werden ebenfalls gezählt) 

CONTAINER-ID : Container-ID. Das Löschen von Containern erfolgt über ID oder NAMES;

BILDER: Spiegeln, von welchem ​​Bild aus begonnen wird

ERSTELLT: Wann wurde es erstellt

STATUS: Status, up bedeutet läuft, Exited bedeutet gestoppt. Es gibt zwei Anweisungen für Nginx1.16 oben. Ein Spiegel kann mehrmals ausgeführt werden und wird als mehrere Container bezeichnet; < /span>

NAMES: Stellt die Spiegelliste dar. Bei der Ausführung können Sie sie mit dem Parameter --name benennen. Wenn Sie keinen Namen finden, wird ein Name zufällig zugewiesen ; Wir haben keinen Namen angegeben, daher sind die NAMEN alle zufällig. von 

-q ## Zeigt nur die ID des Containers an

docker ps -a ## Detaillierte Informationen zu allen Containern auflisten (bereits ausgeführt + nach Ausführung gestoppt)

docker ps -q ## Listen Sie nur die ID-Nummer des Containers auf

docker ps -a -q ## Listen Sie die ID-Nummern der Container auf

4-3 Docker-Stopp

Container, die nicht mehr ausgeführt werden (können nur basierend auf Container-ID oder NAMEN gelöscht werden)

docker stop c0a4f676add2 


 Zeigt an, dass der Stopp erfolgreich war

Stoppen Sie alle laufenden Container

docker stop `docker ps -q`

 4-4 Docker-Start

Starten Sie den Container (entsprechend der Container-ID oder dem Namen).

Überprüfen Sie zunächst mit docker ps -a, welche Container nicht gestartet wurden. Keiner von ihnen wurde gestartet, da ich im vorherigen Schritt Docker Stop „docker ps -q“ verwendet habe, um alle Container zu stoppen.

docker start e932acc39242

Docker ps prüft, ob der Start erfolgreich war, und stellt fest, dass der Start erst vor 15 Sekunden erfolgte

 4-5 Docker subtrahieren

Starten Sie den Container neu (Entsprechend der ID oder dem Namen des Containers)

docker restart e932acc39242

4–6 Docker-RM

Um einen Container zu löschen, können Sie nur gestoppte Container löschen (docker rm -f force deletion kann auch laufende Container löschen).

Erster Docker ps -a, um alle Container anzuzeigen und Container zu löschen, die nicht ausgeführt werden, basierend auf der ID-Nummer (oder NAMEN)

Docker-RM-Container-ID oder Containername, löschen Sie mehrere gleichzeitig, getrennt durch Leerzeichen. Sie können nicht direkt gelöscht werden, wenn sie sich im Up-Zustand befinden. Durch erzwungenes Löschen können die Container im Up-Zustand gelöscht werden. 

 docker rm -f `docker ps -a -q` #Alle Container löschen, -q zeigt nur die Container-ID an und die Anweisungen in Backticks werden zuerst ausgeführt

4-7 Docker-Top

Zeigen Sie die Prozesse im Container an (Entsprechend der ID oder dem Namen des Containers)

4–8 Docker-Statistiken

Überprüfen Sie die Ressourcennutzung von Containern

docker stats e932acc39242

 4-9 Docker-Exec 

Betreten Sie den Container

 docker exec -it Container-ID oder Containername

 # Direkter interaktiver Befehl: docker exec -it 76738703b7b2 ls # ls-Befehl ausführen
 # Betreten Sie das Terminal: docker exec -it 76738703b7b2 /bin/bash oder /bin/sh #/ bin /bash öffnet ein Terminalfenster und der Exit-Befehl verlässt das Terminal. Der Inhalt des Docker-Containers installiert jedoch im Allgemeinen keine zusätzliche Software, sodass viele Befehle wie ifconfig, ps, ip addr usw. nicht verwendet werden können. < /span> 

5. Docker-Compose 

5-1 Docker-Compose-Konfigurationsdatei

Bei allgemeinen Projekten reicht ein Container nicht aus und es werden mehrere Container benötigt. Sollten wir sie einfach einzeln herunterladen und ausführen? Das ist immer noch problematisch. Gibt es eine Möglichkeit, mehrere Container gleichzeitig zu starten? Das heißt, durch die Docker-Compose-Technologie können mehrere Container gleichzeitig gestartet werden.

yum install epel-release.noarch -y
yum install docker-compose -y

#kali安装docker-compose
apt install docker-compose -y
# 查看版本
docker-compose -v

 Hier noch ein zusätzlicher Punkt für Sie: systemctl restart docker. Durch einen Neustart des Docker-Dienstes werden automatisch alle Container geschlossen.

#启动容器的时候,如果加上了--restart=always,那么重启服务之后,这个容器会自动启动
docker run -it -d --restart=always nginx:1.16  # 实现了开机自启动的效果

Wenn Sie mehrere Container starten möchten, müssen Sie eine docker-compose.yml-Datei konfigurieren

# Um Portkonflikte zu vermeiden, können wir zunächst alle Docker-Container schließen

docker stop `docker ps -a -q`
# 为了演示方便,我们可以先创建一个wordpress文件夹,进入到里面创建一个docker-compose.yml名字的文件
mkdir wordpress
cd wordpress/
touch docker-compose.yml
vim docker-compose.yml

# Kopieren Sie den folgenden Inhalt in die Datei, speichern Sie ihn und beenden Sie ihn. Achten Sie darauf, die Kommentare zu entfernen, die ich beim Kopieren markiert habe.
# Beachten Sie, dass für den folgenden Dateiinhalt strenge Formatanforderungen gelten. Selbst ein weiteres Leerzeichen funktioniert nicht. Einrückung wird verwendet, um hierarchische Beziehungen anzuzeigen. Die folgende Konfigurationssyntax wird Yaml-Syntax genannt

version: '3'  # 版本随便起名字
services:  ## 固定格式
   db:  #容器名称,可以随便指定名字
     image: mysql:5.7
     restart: always  # 开机自启动的意思
     environment: ## 一些配置参数
       MYSQL_ROOT_PASSWORD: 123456
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: 123456  # 和下面的WORDPRESS_DB_PASSWORD值要对应上
   wordpress:
     depends_on:  ## 对db容器关联,因为wordpress需要数据库
       - db
     image: wordpress:5.6  
     ports:
       - "83:80"  # 端口映射
     restart: always
     environment:
       WORDPRESS_DB_HOST: db
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: 123456

5-2 allgemeine Docker-Compose-Befehle

#创建并启动
docker-compose up -d # 启动之后就可以通过浏览器访问了
#停止并删除
docker-compose down
#重启
docker-compose restart
#停止
docker-compose stop
#启动
docker-compose start

Mit der Konfigurationsdatei docker-compose.yml können Sie den Befehl docker-compose up -d verwenden, um den entsprechenden Container entsprechend den Containern und Konfigurationselementen in der Konfigurationsdatei herunterzuladen und auszuführen.

 Hinweis: Wenn Sie docker-compose up -d ausführen, muss es unter diesem Konfigurationsdateipfad ausgeführt werden. Wenn es sich um einen anderen Pfad handelt, wird er nicht erkannt.

 Erstellen Sie einen wd-Ordner und geben Sie vim docker-compose.yml ein (wenn dieser Ordner nicht existiert, wird er automatisch erstellt)

Kopieren Sie den Konfigurationsinhalt und fügen Sie ihn ein

 Konfigurierte Inhalte anzeigen

Dann führen Sie es einfach im Verzeichnis mit docker-compose.yml aus 

Die Überprüfung des YML-Syntaxformats ist sehr streng. Ich vermute, dass mit dem Format etwas nicht stimmt, daher habe ich einen Fehler gemeldet. Sie können Baidu verwenden, um das Format selbst zu überprüfen.

Nachdem das Konfigurationsdateiformat korrekt ist, können Sie das entsprechende Bild entsprechend der Konfigurationsdatei herunterladen und ausführen. Mit dieser Methode können wir im Projekt problemlos den benötigten Container starten. 

 Dies sind die üblichen Vorgänge von Docker. Wenn Sie auf Probleme stoßen, hinterlassen Sie bitte eine Nachricht oder führen Sie einen technischen Austausch durch.

Ich denke du magst

Origin blog.csdn.net/m0_67844671/article/details/132872790
Empfohlen
Rangfolge