Heim > Schlagzeilen > Da Docker eingeschränkt ist und in der „Entitätsliste' enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

Da Docker eingeschränkt ist und in der „Entitätsliste' enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

Freigeben: 2020-08-19 14:11:42
nach vorne
5400 Leute haben es durchsucht

Neuigkeiten:

Am 13. August aktualisierte Docker seine Website-Service-Vereinbarung und untersagte damit Ländern, Organisationen und Einzelpersonen, die in mehreren Listen wie der US-amerikanischen „Entity List“ mit einem Embargo belegt sind, die Nutzung der Docker-Website und aller zugehörigen Websites, die dem Service entsprechen Vereinbarung .

Dazu gehören: Huawei, Hikvision, Dahua Technology, iFlytek, Megvii Technology, SenseTime und viele andere Technologieunternehmen sowie Universitäten wie das Harbin Institute of Technology und die Harbin Engineering University.

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

In diesem Artikel werden wir die mysteriöse Welt von Docker erkunden, die Grundprinzipien und praktischen Abläufe von Docker von Grund auf beherrschen und verstehen, warum Docker so wichtig ist. [Verwandte Empfehlungen: Docker-Video-Tutorial]

Im Zeitalter des Rich Web werden Anwendungen immer leistungsfähiger und gleichzeitig immer komplexer. Clusterbereitstellung, Isolationsumgebung, Graustufenfreigabe und dynamische Erweiterung sind unverzichtbar, und die Containerisierung ist zu einer notwendigen Brücke in der Mitte geworden.

Erzählen Sie eine Geschichte

Um besser zu verstehen, was Docker ist, erzählen wir zunächst eine Geschichte:

Ich musste ein Haus bauen, also bewegte ich Steine, schnitt Holz, zeichnete Zeichnungen und baute ein Haus . Nach viel Arbeit wurde das Haus endlich gebaut.

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

Nachdem ich dort eine Weile gelebt hatte, wollte ich plötzlich an den Strand ziehen. Zu diesem Zeitpunkt kann ich nach der vorherigen Methode nur an den Strand gehen, Steine ​​bewegen, Holz hacken, Zeichnungen zeichnen und wieder ein Haus bauen.

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

Als ich Probleme hatte, kam ein Zauberer und brachte mir einen Zauber bei. Diese Magie kann eine Kopie des Hauses, das ich gebaut habe, erstellen, es zu einem „Spiegelbild“ machen und es in meinen Rucksack stecken.

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

Wenn ich am Strand ankomme, werde ich diesen „Spiegel“ verwenden, um ein Haus zu kopieren und einzuziehen.

Ist es nicht erstaunlich? Entsprechend unserem Projekt ist das Haus das Projekt selbst, der Spiegel ist die Kopie des Projekts und der Rucksack ist das Spiegellager.

Wenn Sie die Kapazität dynamisch erweitern möchten, nehmen Sie einfach das Projektbild aus dem Lager und kopieren Sie es nach Ihren Wünschen. Einmal erstellen, überall ausführen!

Kein Grund zur Sorge um Version, Kompatibilität, Bereitstellung und andere Probleme. Es löst die Peinlichkeit, „einmal online abzustürzen und endlos zu bauen“.

Virtuelle Maschinen und Container

Bevor wir beginnen, bereiten wir einige Grundkenntnisse vor:

①Virtuelle Maschine: Virtualisierungshardware

Virtuelle Maschine Virtuelle Maschine bezieht sich auf eine vollständige Softwaresimulation. Ein vollständiges Computersystem, das fungiert als Hardwaresystem und läuft in einer völlig isolierten Umgebung. Alles, was auf einem physischen Computer erledigt werden kann, kann auch auf einer virtuellen Maschine erledigt werden.

Beim Erstellen einer virtuellen Maschine auf einem Computer muss ein Teil der Festplatten- und Speicherkapazität der physischen Maschine als Festplatten- und Speicherkapazität der virtuellen Maschine verwendet werden.

Jede virtuelle Maschine verfügt über ein unabhängiges CMOS, eine unabhängige Festplatte und ein Betriebssystem, und die virtuelle Maschine kann wie eine physische Maschine betrieben werden. Vor der Containertechnologie waren virtuelle Maschinen der größte Einflussfaktor in der Branche.

Die Vertreter der virtuellen Maschinentechnologie sind VMWare und OpenStack.

②Container: Virtualisiert die Betriebssystemschicht und ist eine Standardsoftwareeinheit

Seine Funktionen sind wie folgt:

  • Überall ausführen: Container können Code mit Konfigurationsdateien und zugehörigen Abhängigkeitsbibliotheken verpacken und so einen konsistenten Betrieb gewährleisten in jeder Umgebung.

  • Hohe Ressourcenauslastung: Container bieten Isolierung auf Prozessebene, sodass die CPU- und Speichernutzung detaillierter eingestellt werden kann und dadurch die Rechenressourcen des Servers besser genutzt werden.

  • Schnelle Erweiterung: Jeder Container kann als separater Prozess ausgeführt werden und die Systemressourcen des zugrunde liegenden Betriebssystems gemeinsam nutzen, was die Effizienz beim Starten und Stoppen des Containers beschleunigen kann.

③Unterschiede und Zusammenhänge:

  • Obwohl eine virtuelle Maschine viele „Subcomputer“ isolieren kann, nimmt sie mehr Platz ein und startet langsamer. Auch Software für virtuelle Maschinen kann Geld kosten, beispielsweise VMWare.

  • Containertechnologie muss nicht das gesamte Betriebssystem virtualisieren, sondern nur eine kleine Umgebung, ähnlich einer „Sandbox“, virtualisieren.

  • Virtuelle Maschinen benötigen im Allgemeinen mehrere GB bis Dutzende GB Speicherplatz, während Container nur MB oder sogar KB benötigen.

Werfen wir einen Blick auf die Vergleichsdaten:

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

Virtuelle Maschinen sind Virtualisierungstechnologien, während Containertechnologien wie Docker leichte Virtualisierung sind.

Im Vergleich zu virtuellen Maschinen sind Container leichter und schneller, da sie das zugrunde liegende Linux-Betriebssystem nutzen, um in einer isolierten Umgebung ausgeführt zu werden.

Der Hypervisor einer virtuellen Maschine schafft eine sehr starke Grenze, um zu verhindern, dass Anwendungen ihn durchbrechen, wohingegen die Grenze eines Containers nicht so stark ist.

Lernen Sie Docker kennen

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

Docker ist eine Open-Source-Anwendungscontainer-Engine, die es Entwicklern ermöglicht, ihre Anwendungen und Abhängigkeiten in einen tragbaren Container zu packen und sie dann auf jeder gängigen Linux-Maschine zu veröffentlichen. Auch eine Virtualisierung ist möglich. Container nutzen vollständig den Sandbox-Mechanismus und haben keine Schnittstellen untereinander.

Die drei Kernkonzepte der Docker-Technologie sind:

  • Image

  • Container Container

  • Warehouse Repository

Was ist der Grund, warum Docker leicht ist? Ich glaube, Sie werden auch diesen Zweifel haben: Warum startet Docker so schnell? Wie teile ich den Kernel mit dem Host?

Wenn wir Docker auffordern, einen Container auszuführen, richtet Docker eine ressourcenisolierte Umgebung auf dem Computer ein.

Kopieren Sie dann die gepackte Anwendung und die zugehörigen Dateien in das Dateisystem innerhalb des Namespace. Zu diesem Zeitpunkt ist die Konfiguration der Umgebung abgeschlossen. Docker führt dann den von uns im Voraus angegebenen Befehl aus, um die Anwendung auszuführen.

Das Bild enthält keine dynamischen Daten und sein Inhalt wird nach der Erstellung nicht geändert.

Kernkonzepte

Die Kernkonzepte lauten wie folgt:

  • Build, Ship and Run (bauen, transportieren, betreiben).

  • Einmal erstellen, überall ausführen.

  • Docker selbst ist kein Container, es ist ein Tool zum Erstellen von Containern und eine Anwendungscontainer-Engine.

  • Die drei Kernkonzepte von Docker sind: Image, Container und Repository.

  • Die Docker-Technologie nutzt den Linux-Kernel und Kernel-Funktionen wie Cgroups und Namespaces, um Prozesse zu trennen, sodass sie unabhängig voneinander ausgeführt werden können.

  • Da Namespace- und Cgroups-Funktionen nur unter Linux verfügbar sind, können Container nicht auf anderen Betriebssystemen ausgeführt werden. Wie läuft Docker also unter macOS oder Windows? Docker nutzt tatsächlich einen Trick und installiert eine virtuelle Linux-Maschine auf einem Nicht-Linux-Betriebssystem und führt dann den Container innerhalb der virtuellen Maschine aus.

  • Ein Image ist ein ausführbares Paket, das den Code, die Laufzeit, die Bibliotheken, Umgebungsvariablen und Konfigurationsdateien enthält, die zum Ausführen der Anwendung erforderlich sind. Der Container ist die Laufzeitinstanz des Images.

Weitere Informationen zu den Prinzipien von Docker finden Sie im „Einfachen Leitfaden zu Docker-Arbeitsprinzipien und Containerisierung“, der hier nicht beschrieben wird:

http://dockone.io/article/8788

Installation Docker

①Befehlszeileninstallation

Homebrew's Cask unterstützt bereits Docker für Mac, sodass Sie Homebrew Cask problemlos zur Installation verwenden können. Führen Sie den folgenden Befehl aus:

brew cask install docker
Nach dem Login kopieren

Weitere Installationsmethoden finden Sie unter Offizielle Dokumentation:

https://www.docker.com/get-started

②Version anzeigen

Der Befehl lautet wie folgt:

docker -v
Nach dem Login kopieren

③Bildbeschleunigung konfigurieren

Schreibkonfiguration für Docker Engine festlegen :

{
  registry-mirrors: [
    http://hub-mirror.c.163.com/,
    https://registry.docker-cn.com
  ],
  insecure-registries:[],
  experimental: false,
  debug: true
}
Nach dem Login kopieren

④Installieren der Desktop-Version

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

Die Desktop-Version ist sehr einfach zu bedienen. Gehen Sie zunächst auf die offizielle Website, um sie herunterzuladen [1]. Über den Docker-Desktop können wir ganz einfach Folgendes ausführen:

  • Klonen: Ein Projekt klonen.

  • build: Verpacken Sie das Bild.

  • run: Führen Sie die Instanz aus.

  • Teilen: Teilen Sie das Bild.

Okay, die Vorbereitungen sind fertig, jetzt können Sie Ihr Können unter Beweis stellen!

Schnellstart

Nach der Installation von Docker erstellen wir zunächst ein Image des eigentlichen Projekts und lernen, es zu verwenden.

①Zuerst müssen wir ein allgemeines Verständnis der 11 Befehle haben, die wir verwenden werden

wie unten gezeigt:

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

② Erstellen Sie ein neues Projekt

Aus Gründen der Geschwindigkeit verwenden wir direkt Vue-Gerüst zum Erstellen des Projekts:

vue create docker-demo
Nach dem Login kopieren

Versuchen Sie es zu starten:

yarn serve
Nach dem Login kopieren

Zugriffsadresse: http://localhost:8080/. Das Projekt ist fertig, dann verpacken wir das Projekt:

yarn build
Nach dem Login kopieren

Zu diesem Zeitpunkt ist Dist im Projektverzeichnis die statische Ressource, die wir bereitstellen möchten, und wir fahren mit dem nächsten Schritt fort.

Hinweis: Front-End-Projekte werden im Allgemeinen in zwei Kategorien unterteilt: Eine ist die statische Bereitstellung direkt mit Nginx und die andere erfordert den Start des Node-Dienstes. In diesem Abschnitt betrachten wir nur den ersten Typ. Was den Node-Dienst betrifft, werde ich ihn später ausführlich erläutern.

③新建 Dockerfile

命令如下:

cd docker-demo && touch Dockerfile
Nach dem Login kopieren

此时的项目目录如下:

.
├── Dockerfile
├── README.md
├── babel.config.js
├── dist
├── node_modules
├── package.json
├── public
├── src
└── yarn.lock
Nach dem Login kopieren

可以看到我们已经在 docker-demo 目录下成功创建了 Dockerfile 文件。

④准备 Nginx 镜像

运行你的 Docker 桌面端,就会默认启动实例,我们在控制台拉取 Nginx 镜像:

docker pull nginx
Nach dem Login kopieren

控制台会出现如下信息:

Using default tag: latest
latest: Pulling from library/nginx
8559a31e96f4: Pull complete
8d69e59170f7: Pull complete
3f9f1ec1d262: Pull complete
d1f5ff4f210d: Pull complete
1e22bfa8652e: Pull complete
Digest: sha256:21f32f6c08406306d822a0e6e8b7dc81f53f336570e852e25fbe1e3e3d0d0133
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
Nach dem Login kopieren

如果你出现这样的异常,请确认 Docker 实例是否正常运行。

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Nach dem Login kopieren

镜像准备 OK,我们在根目录创建 Nginx 配置文件:

touch default.conf
Nach dem Login kopieren

写入:

server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
    error_log  /var/log/nginx/error.log  error;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
Nach dem Login kopieren

⑤配置镜像

打开 Dockerfile ,写入如下内容:

FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf
Nach dem Login kopieren

我们逐行解释一下代码:

  • FROM nginx 指定该镜像是基于 nginx:latest 镜像而构建的。

  • COPY dist/ /usr/share/nginx/html/ 命令的意思是将项目根目录下 dist 文件夹中的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下。

  • COPY default.conf /etc/nginx/conf.d/default.conf 将 default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换 Nginx 镜像里的默认配置。

⑥构建镜像

Docker 通过 build 命令来构建镜像:

docker build -t jartto-docker-demo .
Nach dem Login kopieren

按照惯例,我们解释一下上述代码:

  • -t 参数给镜像命名 jartto-docker-demo。

  • . 是基于当前目录的 Dockerfile 来构建镜像。

执行成功后,将会输出:

Sending build context to Docker daemon  115.4MB
Step 1/3 : FROM nginx
 ---> 2622e6cca7eb
Step 2/3 : COPY dist/ /usr/share/nginx/html/
 ---> Using cache
 ---> 82b31f98dce6
Step 3/3 : COPY default.conf /etc/nginx/conf.d/default.conf
 ---> 7df6efaf9592
Successfully built 7df6efaf9592
Successfully tagged jartto-docker-demo:latest
Nach dem Login kopieren

镜像制作成功!我们来查看一下容器:

docker image ls | grep jartto-docker-demo
Nach dem Login kopieren

可以看到,我们打出了一个 133MB 的项目镜像:

jartto-docker-demo latest 7df6efaf9592 About a minute ago 133MB
Nach dem Login kopieren

镜像也有好坏之分,后续我们将介绍如何优化,这里可以先暂时忽略。

⑦运行容器

命令如下:

docker run -d -p 3000:80 --name docker-vue jartto-docker-demo
Nach dem Login kopieren

这里解释一下参数:

  • -d 设置容器在后台运行。

  • -p 表示端口映射,把本机的 3000 端口映射到 container 的 80 端口(这样外网就能通过本机的 3000 端口访问了。

  • --name 设置容器名 docker-vue。

  • jartto-docker-demo 是我们上面构建的镜像名字。

补充一点:在控制台,我们可以通过 docker ps 查看刚运行的 Container 的 ID:

docker ps -a
Nach dem Login kopieren

控制台会输出:

CONTAINER ID IMAGE              COMMAND                  CREATED       STATUS PORTS  NAMES
ab1375befb0b jartto-docker-demo /docker-entrypoint.…   8 minutes ago Up 7 minutes  0.0.0.0:3000->80/tcp  docker-vue
Nach dem Login kopieren

如果你使用桌面端,那么打开 Docker Dashboard 就可以看到容器列表了,如下图:

Da Docker eingeschränkt ist und in der „Entitätsliste enthalten ist, sprechen wir darüber, warum Docker so wichtig ist.

⑧访问项目

因为我们映射了本机 3000 端口,所以执行:

curl -v -i localhost:3000
Nach dem Login kopieren

或者打开浏览器,访问:localhost:3000。

⑨发布镜像

如果你想为社区贡献力量,那么需要将镜像发布,方便其他开发者使用。

发布镜像需要如下步骤:

  • 登陆 dockerhub[2],注册账号。

  • 命令行执行 docker login,之后输入我们的账号密码,进行登录。

  • 推送镜像之前,需要打一个 Tag,执行 docker tag /:

全流程结束,以后我们要使用,再也不需要「搬石头、砍木头、画图纸、盖房子」了,拎包入住。这也是 Docker 独特魅力所在。

常规操作

到这里,恭喜你已经完成了 Docker 的入门项目!如果还想继续深入,不妨接着往下看看。

①参数使用

FROM:

  • 指定基础镜像,所有构建的镜像都必须有一个基础镜像,且 FROM 命令必须是 Dockerfile 的第一个命令

  • FROM [AS ] 指定从一个镜像构建起一个新的镜像名字

  • FROM [:] [AS ] 指定镜像的版本 Tag

  • 示例:FROM mysql:5.0 AS database

MAINTAINER:

  • 镜像维护人的信息

  • MAINTAINER

  • 示例:MAINTAINER Jartto Jartto@qq.com

RUN:

  • 构建镜像时要执行的命令

  • RUN

  • 示例:RUN [executable, param1, param2]

ADD:

  • Lokale Dateien hinzufügen und in den Container kopieren. Das komprimierte Paket wird dekomprimiert und Sie können auf die Dateien im Netzwerk zugreifen und sie automatisch herunterladen.

  • ADD ADD * .js /app JS-Dateien zum App-Verzeichnis im Container hinzufügen

  • KOPIEREN:

Die Funktion ist die gleiche wie ADD, sie kopiert nur die Datei und dekomprimiert oder lädt sie nicht herunter

  • CMD:

Der nach dem Starten des Containers ausgeführte Befehl unterscheidet sich von RUN, dem Befehl, der beim Erstellen des Images ausgeführt werden soll.

  • Wenn Docker Run zum Ausführen des Containers verwendet wird, kann dies überschrieben werden in der Befehlszeile

  • Beispiel: CMD [ausführbare Datei, Parameter1, Parameter2]

  • ENTRYPOINT:

ist ebenfalls ein Ausführungsbefehl, genau wie CMD, mit der Ausnahme, dass dieser Befehl vom nicht überschrieben wird Befehlszeile

  • ENTRYPOINT [ausführbare Datei, param1, param2]

  • Beispiel: ENTRYPOINT [donnet, myapp.dll]

  • LABEL: Metadaten zum Bild in Schlüsselwertform hinzufügen.

LABEL == ENV Legen Sie jeweils eine Umgebungsvariable fest. key>= = Mehrere Umgebungen festlegen Der Port des Programms im Container ist zwar derselbe wie der Host, besteht aber eigentlich aus zwei Ports Sie müssen -p verwenden, um den externen Port zuzuordnen, um auf den Port im Container zuzugreifen Verzeichnis, das im Container gemountet werden muss, und dieses Verzeichnis wird einem zufälligen Verzeichnis auf dem Host zugeordnet, um Datenpersistenz und Synchronisierung zu erreichen

  • VOLUME [/var/log,/var/test.....] Gibt mehrere Verzeichnisse im Container an, die gemountet werden müssen, und ordnet diese Verzeichnisse mehreren zufälligen Verzeichnissen auf dem Host zu, um Datenpersistenz und -synchronisierung zu erreichen

  • VOLUME /var/data var/log gibt das Verzeichnis var/log im an Container, der im Verzeichnis /var/data auf dem Host gemountet werden soll. In diesem Formular kann das Verzeichnis auf dem Host manuell angegeben werden.

WORKDIR: Legen Sie das Arbeitsverzeichnis von RUN und CMD fest , COPY und ADD werden gleichzeitig geändert Wählen Sie hinsichtlich Sicherheit und Berechtigungen verschiedene Benutzer entsprechend dem auszuführenden Befehl aus muss übergeben werden, um das Image zu erstellen

    ARG [=]
  • ARG name=sss
  • Weitere Vorgänge, siehe offizielle Dokumentation [3]:

https://docs.docker.com/

  • Best Practices

  • Nachdem wir den regulären Betrieb von Docker gemeistert haben, können wir Mirror ganz einfach das gewünschte Projekt eingeben.

    Allerdings sind auch die durch verschiedene Vorgänge erzeugten Bilder sehr unterschiedlich. Was genau verursacht die Spiegelungsunterschiede? Wir könnten genauso gut weiter forschen.
  • Im Folgenden finden Sie die Best Practices für die Anwendung von Docker. Bitte befolgen Sie die folgenden Richtlinien:

Klarheit erforderlich: Welches Bild ist erforderlich?

Schrittoptimierung: Schritte mit weniger Änderungen werden priorisiert.
  • Klare Version: Das Bild ist eindeutig benannt.
  • Dokumentation: Der gesamte Bildverpackungsschritt ist reproduzierbar.
Zusammenfassung

Containerisierungstechnologie wird definitiv eine der unverzichtbaren Fähigkeiten im Cloud-Zeitalter sein, und Docker ist nur ein Tropfen auf den heißen Stein. Dazu kommen Technologien wie das Cluster-Container-Management Kubernetes, Service Mesh und Istio.

    Öffnen Sie die Tür von Docker, ziehen Sie die Kokons weiter ab und gehen Sie Schicht für Schicht tiefer. Sie werden den unendlichen Charme der Containerisierung spüren.

    Verwandte Links:

    • https://www.docker.com/products/docker-desktop

    • https://hub.docker.com/

    • https://docs. docker.com/

    Originaladresse: http://jartto.wang/2020/07/04/learn-docker

    Autor: jartto

    Wenn Sie mehr verwandtes Wissen erfahren möchten, können Sie Folgendes besuchen: Tutorial zur Docker-Nutzung ! !

Verwandte Etiketten:
Quelle:weixin
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage