Wie installiere und konfiguriere ich Docker?
Dieser Artikel ergänzt die Webinarreihe zum Bereitstellen und Verwalten von Container-Workloads in der Cloud. In dieser Reihe werden die Grundlagen von Containern vorgestellt, darunter das Container-Lebenszyklusmanagement, die Bereitstellung von Multi-Container-Anwendungen, die Skalierung von Arbeitslasten und das Verständnis von Kubernetes. Außerdem werden Best Practices für die Ausführung zustandsbehafteter Anwendungen hervorgehoben.
Dieses Tutorial behandelt die Konzepte und Befehle, die im ersten Teil dieser Serie „Erste Schritte mit Containern“ vorgestellt wurden.
Einführung
Docker ist eine Plattform für die Bereitstellung und Verwaltung von Containeranwendungen. Container sind aufgrund der Flexibilität, die sie bieten, bei Entwicklern, Administratoren und Entwicklungsingenieuren beliebt.
Docker besteht aus drei Grundkomponenten:
Docker-Engine, Docker-Tool, Docker-Registrierung
Docker Engine bietet die Kernfunktionalität für die Verwaltung von Containern. Es ist mit dem zugrunde liegenden Linux-Betriebssystem verbunden, um einfache APIs für die Abwicklung des Container-Lebenszyklus bereitzustellen.
Docker Tools ist eine Reihe von Befehlszeilentools, die mit der von der Docker Engine bereitgestellten API interagieren. Sie werden verwendet, um Container auszuführen, neue Images zu erstellen, Speicher und Netzwerk zu konfigurieren und viele weitere Vorgänge auszuführen, die sich auf den Containerlebenszyklus auswirken.
In der Docker-Registrierung werden Container-Images gespeichert. Für jedes Bild können mehrere Versionen vorhanden sein, die durch eindeutige Tags gekennzeichnet sind. Benutzer rufen vorhandene Bilder aus der Registrierung ab und übertragen neue Bilder. Docker Hub ist eine verwaltete Registrierung, die von Docker, Inc. verwaltet wird. Es ist auch möglich, die Registrierung in einer eigenen Umgebung auszuführen, um die Bilder näher an der Engine zu halten.
Am Ende dieses Tutorials haben Sie Docker auf einem DigitalOcean Droplet installiert, Container verwaltet, Bilder verarbeitet, Persistenz hinzugefügt und eine private Registrierung eingerichtet.
Voraussetzungen
Um diesem Tutorial folgen zu können, benötigen Sie:
Richten Sie ein Ubuntu 16.04-Droplet gemäß dem Ubuntu 16.04 Initial Server Setup-Tutorial ein, das einen sudo-Benutzer ohne Rootberechtigung enthält und eine Firewall.
Docker Hub-Konto . Diese Übersicht über Docker Hub hilft Ihnen beim Einstieg.
Standardmäßig erfordert der Docker-Befehl Root-Rechte. Es ist jedoch möglich, Befehle ohne das Sudo-Präfix auszuführen, indem Sie Docker als Docker-Benutzer in der Docker-Gruppe ausführen.
Um Ihr Droplet auf diese Weise zu konfigurieren, führen Sie den Befehl sudo usermod -aG docker ${USER} aus. Dadurch wird der aktuelle Benutzer zur Docker-Gruppe hinzugefügt. Führen Sie dann den Befehl su - ${USER} aus, um die neue Gruppenmitgliedschaft anzuwenden.
In diesem Tutorial wird davon ausgegangen, dass Ihr Server so konfiguriert ist, dass er Docker-Befehle ohne das Sudo-Präfix ausführt.
Schritt 1 – Docker installieren
Führen Sie nach der SSH-Verbindung zum Droplet den folgenden Befehl aus, um alle möglicherweise installierten Docker-bezogenen Pakete zu löschen, und installieren Sie dann Docker aus dem offiziellen Repository:
sudo apt-get remove docker docker-engine docker.io sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo apt-key fingerprint 0EBFCD88sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"sudo apt-get update sudo apt-get install -y docker-ce
Nach der Installation von Docker überprüfen Sie die Installation mit dem folgenden Befehl:
docker info
Der obige Befehl zeigt die Details der in der Umgebung bereitgestellten Docker Engine. Der nächste Befehl überprüft, ob die Docker Tools korrekt installiert und konfiguriert sind. Es sollte die Versionen der Docker-Engine und der Docker-Tools drucken.
docker version
Schritt 2 – Container starten
Docker-Container werden von einem vorhandenen Image gestartet, das in der Registrierung gespeichert ist. Bilder in Docker können in privaten oder öffentlichen Repositorys gespeichert werden. Bei privaten Repositorys müssen sich Benutzer authentifizieren, bevor sie Bilder abrufen. Auf öffentliche Bilder kann jeder zugreifen.
Um nach einem Bild mit dem Namen „hello-world“ zu suchen, führen Sie den folgenden Befehl aus:
docker search hello-world
Es können mehrere Bilder vorhanden sein, die mit dem Namen „hello-world“ übereinstimmen. Wählen Sie den größten Stern, dieser zeigt die Wirkung des Bildes.
Überprüfen Sie die verfügbaren Bilder in Ihrer lokalen Umgebung mit dem folgenden Befehl:
docker images
Da wir noch keine Container ausgerollt haben, wird es keine Bilder geben. Wir können jetzt das Image herunterladen und lokal ausführen:
docker pull hello-world docker run hello-world
Wenn wir den Docker-Run-Befehl ausführen, ohne das Image zu ziehen, ruft Docker Engine zuerst das Image ab und führt es dann aus. Das erneute Ausführen des Docker-Images-Befehls zeigt, dass das Hello-World-Image lokal verfügbar ist.
Lassen Sie uns einen Container starten, der mehr Sinn macht: einen Apache-Webserver.
docker run -p 80:80 --name web -d httpd
Möglicherweise bemerken Sie, dass zusätzliche Optionen an den Docker-Run-Befehl übergeben werden. Hier ist eine Erklärung dieser Schalter:
-p – Dies weist die Docker-Engine an, den Port 80 des Containers auf dem Port 80 des Hosts verfügbar zu machen. Da Apache auf Port 80 lauscht, müssen wir ihn auf dem Host-Port verfügbar machen. --name – Dieser Schalter weist unserem laufenden Container einen Namen zu. Wenn wir dies weglassen, weist Docker Engine einen zufälligen Namen zu.
-d – Diese Option weist die Docker-Engine an, den Container im getrennten Modus auszuführen. Andernfalls startet der Container im Vordergrund und blockiert den Zugriff auf die Shell. Indem wir den Container in den Hintergrund schieben, können wir die Shell weiterhin verwenden, während der Container noch läuft.
要验证我们的容器是否确实在后台运行,请尝试以下命令:
docker ps
输出显示名为web的容器正在运行,端口80映射到主机端口80 。
现在访问Web服务器:
curl localhost
让我们停止并用下面的命令删除正在运行的容器:
docker stop web docker rm web
运行docker ps再次确认容器已被终止。
第3步 - 添加存储到容器
容器是短暂的,这意味着当容器终止时,存储在容器内的任何东西都将丢失。 要将数据保存在容器的寿命之外,我们需要将容器附加到容器中。 卷是主机文件系统的目录。
首先在主机上创建一个新目录:
mkdir htdocs
现在,让我们用一个新开关启动容器来挂载htdocs目录,并将其指向Apache Web服务器的文档根目录:
docker run -p 80:80 --name web -d -v $PWD/htdocs:/usr/local/apache2/htdocs httpd
-v开关将容器中的htdocs目录指向主机的文件系统。 对这个目录所做的任何更改都将在两个位置都可见。
通过运行以下命令从容器中访问目录:
docker exec -it web /bin/bash
该命令以交互模式将我们的终端连接到容器的外壳。 你应该看到你现在被丢在容器内。
导航到htdocs文件夹并创建一个简单的HTML文件。 最后退出shell返回主机:
cd /usr/local/apache2/htdocs echo '<h1>Hello World from Container</h1>' > index.htmlexit
再次执行curl localhost命令显示Web服务器正在返回我们创建的页面。
我们不仅可以从主机访问这个文件,但我们也可以修改它:
cd htdocs cat index.html echo '<h1>Hello World from Host</h1>' | sudo tee index.html >/dev/null
再次运行curl localhost ,确认Web服务器正在提供从主机创建的最新页面。
使用以下命令终止容器。 ( -f迫使Docker先停止而不停止。)
docker rm -f web
第4步 - 建立图像
除了从注册表中运行现有的图像,我们可以创建自己的图像,并将其存储在注册表中。
您可以从现有的容器中创建新的图像。 首先提交对容器所做的更改,然后将图像标记并推送到注册表。
让我们再次启动httpd容器并修改默认文档:
docker run -p 80:80 --name web -d httpd docker exec -it web /bin/bash cd htdocs echo '<h1>Welcome to my Web Application</h1>' > index.htmlexit
该容器现在运行一个自定义的index.html 。 你可以使用curl localhost来验证它。
在我们提交更改后的容器之前,最好停止它。 停止后,我们将运行commit命令:
docker stop web docker commit web doweb
使用docker images命令确认图像的创建。 它显示了我们刚刚创建的doweb图像。
要在Docker Hub中标记和存储此映像,请运行以下命令将映像推送到公共注册表:
docker login docker tag your_docker_hub_username/doweb docker push
您可以通过从浏览器或命令行在Docker Hub中搜索来验证新映像。
第5步 - 启动私人注册表
可以在私人环境中运行注册表以保持图像更加安全。 它也减少了Docker引擎和映像库之间的延迟。
Docker Registry是一个可以像任何其他容器一样启动的容器。 由于注册表拥有多个图像,因此最好将存储卷附加到该图像上。
docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/registry:/var/lib/registry registry
请注意,容器是在后台启动的,端口5000暴露, registry目录映射到主机文件系统。 您可以通过执行docker ps命令来验证容器正在运行。
我们现在可以标记一个本地图像,并将其推送到私人注册表。 我们首先从Docker Hub中取出busybox容器并对其进行标记。
docker pull busybox docker tag busybox localhost:5000/busybox docker images
以前的命令确认busybox容器现在用localhost:5000标记,所以将图像推送到私有注册表。
docker push localhost:5000/busybox
将图像推送到本地注册表,让我们尝试从环境中删除它,并从注册表中拉回。
docker rmi -f localhost:5000/busybox docker images docker pull localhost:5000/busybox docker images
我们经历了拉动图像,标记,推送到本地注册表,最后拉回来的整个圈子。
可能有些情况下您想要在专用主机中运行私有注册表。 在不同的机器上运行的Docker引擎会与远程注册表进行通信,以获取和推送图像。
由于注册表不安全,我们需要修改Docker引擎的配置以启用对不安全注册表的访问。 为此,编辑位于/etc/docker/daemon.json
的daemon.json文件。 创建文件,如果它不存在。
添加以下条目:
编辑/etc/docker/daemon.json
{
"insecure-registries" : ["REMOTE_REGISTRY_HOST:5000"]}
将REMOTE_REGISTRY_HOST
替换为远程注册表的主机名或IP地址。 重新启动Docker引擎以确保应用配置更改。
结论
本教程帮助您开始使用Docker。 它涵盖了安装,容器管理,映像管理,存储和私有注册表等基本概念。 本系列即将发布的会议和文章将帮助您超越Docker的基础知识。
相关参考:docker教程
Das obige ist der detaillierte Inhalt vonSo installieren und konfigurieren Sie Docker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!