Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist das Docker-Ökosystem?

Was ist das Docker-Ökosystem?

青灯夜游
青灯夜游Original
2022-05-11 14:49:592861Durchsuche

Das Ökosystem umfasst: 1. Docker Hub, eine offizielle Ressource für vorgefertigte Docker-Dateien und bietet öffentliche und private Image-Repositorys; 2. Docker Engine, die Kernsoftware zum Ausführen und Verwalten von Containern; Ein visuelles Management-Tool; 4. Machine und Swarm, das eine Reihe einfacher Tools für verschiedene Virtualisierungs- und Cloud-Service-Anbieter bereitstellt, um ihre lokalen Projekte zu verschieben und zu skalieren;

Was ist das Docker-Ökosystem?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.

Docker ist ein Tool zum Erstellen von „Containern“, die nur das enthalten, was Sie für eine unabhängige Anwendung oder einen Technologie-Stack benötigen. Im Gegensatz zu virtuellen Maschinen nutzen diese Container dieselben Ressourcen, um die Interaktion zwischen dem Container und dem Host zu verwalten. Dadurch werden Docker-Container schnell, leichtgewichtig, sicher und gemeinsam nutzbar.

Das derzeit verfügbare Docker-Ökosystem umfasst: Docker Hub, Docker Engine, Kitematic, Docker Machine, Swarm, Docker Compose, Dokcer Cloud und Data Center. Im Folgenden werden die Funktionen dieser Tools im Detail vorgestellt und wie sie verbessert werden können. Kombinieren Sie diese Tools.

Docker Hub

Der Kern jedes Projekts, das Docker verwendet, ist ein Dockerfile-Datei. Diese Datei enthält Anweisungen, wie Docker ein Image erstellt. Schauen wir uns ein einfaches Beispiel an:

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt

In diesem Beispiel ruft die Docker-Datei ein vorhandenes Image einer bestimmten Version ab, kopiert das aktuelle lokale Verzeichnis in das Dateisystem des Containers, legt es als Arbeitsverzeichnis fest und lädt dann Python über den Befehl „rely“ aus einer Textdatei herunter .

Docker Hub ist die offizielle Ressource für vorgefertigte Docker-Dateien und bietet öffentliche (kostenlose) und private (kostenpflichtige) Image-Repositorys. Wenn Sie nach einer Docker-Datei suchen, die Ihren Anforderungen entspricht, beginnen Sie mit der Suche im Docker Hub und nutzen Sie die Projektdokumentation, Downloads und Bildbewertungen als Entscheidungshilfe.

Was ist das Docker-Ökosystem?

Docker Engine

Docker Engine ist die Kernsoftware zum Ausführen und Verwalten von Containern. Oft wird es einfach als Docker oder Docker-Plattform bezeichnet. Die Docker-Engine besteht aus vielen spezialisierten Tools, die zusammenarbeiten, um Container zu erstellen und auszuführen, wie z. B. APIs, Ausführungstreiber, Laufzeiten, Shim-Prozesse usw.

Docker Engine erstellt Dockerfile-Dateien und konvertiert sie in verwendbare Container. Docker Engine ist der Kern von Docker. Ohne Docker Engine kann nichts laufen. Abhängig von Ihrem Betriebssystem gibt es verschiedene Möglichkeiten, die Docker Engine herunterzuladen Weitere Details erfahren Sie hier.

Um einen Container basierend auf einem Image in Docker Hub zu öffnen, sollten Sie zunächst das Image abrufen und ausführen. Weiter mit dem Python-Beispiel:

docker pull python
docker run -it --rm --name script-name -v "$PWD":/usr/src/appname -w /usr/src/appname python:3 python app.py

Dadurch wird das neueste Python-Image abgerufen und dann ein Container geöffnet, um ein Python-Skript auszuführen und den Container nach der Ausführung zu verlassen. Der Befehl „run“ bietet weitere Optionseinstellungen Lesen Sie hier den vollständigen Leitfaden.

Wenn ein Docker-Ausführungsbefehl komplexer wird, ist es möglicherweise eine bessere Idee, eine eigene benutzerdefinierte Docker-Datei zu erstellen. Starten Sie einen Container basierend auf einer lokalen Docker-Datei und führen Sie das folgende Verzeichnis mit den Dateien aus:

docker build -t my_image .

Dieser Befehl erstellt ein Bild mit dem Namen my_image. Führen Sie den folgenden Befehl aus, um einen Container basierend auf diesem Image zu starten:

docker run -name my_image_container -i -t my_image

Dieser Befehl öffnet einen Container basierend auf dem benutzerdefinierten my_image-Image. Dieser Container heißt my_image_container.

Kitematic (visuelles Docker-Management-Tool)

对于那些宁愿避免命令行的用户来说,  Kitematic  是一个 Docker GUI 工具,它可以更快速、更简单的运行Docker容器,现在已经支持 Mac /Windows/Linux。

搜索你需要的镜像,创建一个容器,你最好去Kitematic。Kitematic提供了基本的配置选项,但对于更高级的设置,你可能需要进入命令行。   

Was ist das Docker-Ökosystem?

你的容器出现在左手边,在那里它们可以被启动、停止、重启,更有用的是,你可以在那里找到容器日志和直接SSH(exec按键)访问。   

Was ist das Docker-Ökosystem?

Docker Machine和Swarm

生产中使用Docker的第一步是了解  Machine  和Swarm,它们为各种虚拟化和云服务提供商提供了一套简单的工具集用以移动和缩放他们的本地项目。  

“生产中使用Docker的第一步是了解Machine和Swarm。”  

例如,在Azure上创建一个Docker实例:  

docker-machine create -d azure --azure-subscription-id="XXX" --azure-subscription-cert="/mycert.pem" ecodemo

这个命令使用预装的Docker创建一个Ubuntu 12.04-based虚拟机并命名为ecodemo。每个供应商都需要不同的参数和认证方法,这些默认设置可以被重写。在  这个文档  中可以阅读到更多的细节。   

当与  Swarm  结合后,Machine可以创建Docker实例的集群,这个集群被视为一个单一的、大的Docker实例。每一个Swarm集群都需要一个master实例,这个master实例可以用下面的命令来创建:  

docker-machine create
-d virtualbox
--swarm
--swarm-master
--swarm-discovery token://TOKEN_ID
swarm-master

这样就会在VirtualBox中创建一个Docker实例并且设置这个Docker实例为Swarm集群的一个master节点。TOKEN_ID非常重要,因为它可以帮助集群中的所有节点识别彼此。除了手动创建TOKEN_ID标识以外,Swarm也有  发现系统  来帮助你管理这个过程。 

下面的命令使用相同的TOKEN_ID标识添加Docker实例到Swarm集群:  

docker-machine create
-d virtualbox
--swarm
--swarm-discovery token://TOKEN_ID
swarm-node-n

swarm-node-n对于集群中的每一个节点来说都是一个唯一的名字。   

现在,代替从单个虚拟机中开启容器,你可以在集群中开启容器,master节点将会把这个容器分配给最可用的和最有能力的节点。 

Docker Compose

Compose  使得由多个组件(像容器)组成的应用程序更加简单,你可以开始使用一个命令在一个单一的配置文件中声明所有这些组件。   

下面是一个Compose文件(称为docker-compose.yml)的例子,这个例子创建三个  Crate  数据库实例和一个  Laravel  (用一些额外的配置)PHP框架实例。最重要的是,容器与Links配置选项相连。  

crate1:
image: crate
ports:
- "4200:4200"
- "4300:4300"
crate2:
image: crate
crate3:
image: crate
volumes:
- ./data:/importdata
laravelcomposer:
image: dylanlindgren/docker-laravel-composer
volumes:
- /laravel-application:/var/www
command: --working-dir=/var/www install
links:
- crate1
laravelartisan:
image: dylanlindgren/docker-laravel-artisan
links:
- crate1
volumes_from:
- laravelcomposer
working_dir: /var/www
command: serve --host=0.0.0.0:8080
ports:
- "8000:8000"
- "8080:8080"

所有这些实例和它们的配置现在可以通过运行以下在同一目录中的docker-compose.yml文件的命令来开始:  

docker-compose up

Was ist das Docker-Ökosystem?

你可以使用相同的子命令作为Docker的命令来影响所有以docker-compose开始的容器。例如,docker-compose stop命令可以停止以docker-compose开始的容器。   

Was ist das Docker-Ökosystem?

Docker Cloud

容器的自动化管理和编排是Docker的主要功能,但却一直由第三方服务来提供,直到去年Docker获得了  Tutum(它支撑着Docker云)  。虽然没有完整的命令行工具(还没有),Docker云服务允许Docker Compose文件设置应用程序栈,所以它不是来自于生态型的其它部分的一个大的导流。  

“容器的自动化管理是Docker的重要组成,但知道最近一直由第三方来提供。”  

例如:  

crate1:
image: crate
ports:
- "4200:4200"
- "4300:4300"
command: crate -Des.network.publish_host=_ethwe:ipv4_
crate2:
image: crate
command: crate -Des.network.publish_host=_ethwe:ipv4_
crate3:
image: crate
command: crate -Des.network.publish_host=_ethwe:ipv4_

这样就创建了同一个镜像的三个实例,其中一个手动设置主机与Docker之间的端口分配,其他的端口分配是自动的。我将很快重新访问command。   

如果你想在超过一个节点(节点能够运行它可以管理的足够多的容器和一个私有仓库上扩展应用程序,Docker Cloud是有偿服务。这对于实验目的来说足够了。记住,Docker Cloud默认管理托管在第三方托管服务器上的容器,所以你也需要支付费用。使得Docker Cloud代理运行在任何你管理的Linux主机上是可能的,你可以  在这里找到操作指南  。   

Was ist das Docker-Ökosystem?

上面的截图显示了三个使用预先设定的规则运行在跨越两个数字海洋的实例上的Docker容器,这个预先设定的规则是根据你设置的参数来将容器分配给主机。它会自动确保你指定数量的容器始终在运行。   

在之前的Docker Compose例子中,你可能已经注意到_ethwe:ipv4_。这是Docker Cloud的另外一个重要特征。许多分布式应用和服务依赖“  服务发现  ”来找到同一服务的其他实例并进行通信。当在数据中心和物理机器上传播服务时,这往往需要实例的手动说明或者需要另一种方式来找到彼此。   

Docker Cloud包括支持  Weave  在你的实际网络中创建一个“软”网络;所有的容器和应用都可以发现彼此,无论它们被托管在哪里。在上面的例子中,我们重写了向容器发出的默认命令,以确保它接收它需要使用此功能的信息。  

Data Center

到目前为止,本文涉及的大部分工具都是你安装,主机,和支持的工具。对企业用户来说,他们寻找安全性、性能和支持较高的保证,Docker提供了  数据中心  。   

它使用了覆盖这里的许多相同的工具包,但是增加了一个放置你的镜像的私有仓库,一个私有云,高级支持,和供应商可能吸引企业用户的第三方集成。这些包括LDAP and Active Directory用户管理,容器检测,和日志记录。  

推荐学习:《docker视频教程

Das obige ist der detaillierte Inhalt vonWas ist das Docker-Ökosystem?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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