Heim >Betrieb und Instandhaltung >Docker >Was ist Runc in Docker?
In Docker ist RunC ein CLI-Tool zum Erstellen und Ausführen von Containern gemäß OCI-Standards, ein Befehlszeilentool zum Ausführen von Containern, das den OCI-Standards folgt. runC ist der Kernbestandteil von Docker. Die Erstellung, Ausführung, Zerstörung und andere Vorgänge des Containers werden schließlich durch den Aufruf von runc abgeschlossen.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.
OCI definiert den Container-Laufzeitstandard und runC ist eine spezifische Implementierung, die von Docker gemäß dem offenen Containerformatstandard Open Container Format, OCF, entwickelt wurde.
Dieses Projekt wird aus Dockers libcontainer migriert und implementiert Funktionen wie Container-Start und -Stopp, Ressourcenisolation usw. Daher kann der Container direkt über dieses Tool ausgeführt werden.
Die sogenannte Container-Laufzeit (Container Runtime) umfasst Container-Management und Container-Image. OCI ist der Industriestandard für Container-Laufzeit, einschließlich:
A) Laufzeitstandard runtime-spec;
B) Container-Image-Standard image-spec.
Einfach ausgedrückt definiert der Container-Image-Standard die Verpackungsform des Container-Images und der Laufzeitstandard definiert, wie ein Container ausgeführt wird.
RunC ist ein CLI-Tool, das Container gemäß OCI-Standards erstellt und ausführt. Es ist ein Befehlszeilentool zum Ausführen von Containern, das OCI-Standards folgt.
Docker
In der alten Version müssen Sie docker-runc
aufrufen, aber in der neuesten CE-Version wird es direkt geändert zum Befehl runc
. docker-runc
,而最新的 CE 版本里,直接修改为了 runc
命令。
RunC 作为容器的最底层运行环境,其上层通过 Docker 进行管理。
runC就是docker中最为核心的部分,容器的创建,运行,销毁等等操作最终都将通过调用runc完成。
RunC 作为容器的运行态,不包含镜像的管理,如果直接使用,需要先准备好镜像,这里直接使用已经构建好的 BusyBox 模板。
OCI Bundle
OCI Bundle 是指满足 OCI 标准的一系列文件,这些文件包含了运行容器所需要的所有数据,它们存放在一个共同的目录,该目录包含以下两项:
config.json
包含容器运行的配置数据;如果主机上安装了 Docker,那么可以使用 docker export
命令将已有镜像导出为 OCI Bundle 的格式。
生成 rootfs
直接使用 Docker 中的 BusyBox 模板。
配置文件
在 rootfs
目录下,包含了常见的二进制文件,除了根目录之外,还需要一个 config.json
配置文件,可以通过 runc spec
命令生成配置模板。
详细的配置可以参考 https://github.com/opencontainers/runtime-spec/blob/master/spec.md
将配置文件中的 "terminal": true
修改为 false
,否则会在创建的时候会宝 cannot allocate tty if runc will detach without setting console socket
报错。
另外,因为关闭了终端,所以将命令修改为 "args": [ "sleep", "10000" ],
参数。
启动
在启动了之后,可以通过 ps aux | grep sleep
RunC ist der Betriebszustand des Containers und beinhaltet keine Bildverwaltung. Wenn Sie es direkt verwenden, müssen Sie das Bild zuerst vorbereiten bereits erstellte BusyBox-Vorlage.
🎜🎜🎜OCI-Bundle bezieht sich auf eine Reihe von Dateien, die dem OCI-Standard entsprechen. Diese Dateien enthalten alle zum Ausführen des Containers erforderlichen Daten. Sie werden in einem gemeinsamen Verzeichnis gespeichert, das die folgenden zwei Elemente enthält : 🎜config.json
Enthält Konfigurationsdaten für die Containerausführung. docker export
verwenden, um das vorhandene Image in das OCI-Bundle-Format zu exportieren . 🎜🎜🎜🎜Rootfs generieren🎜🎜🎜🎜Verwenden Sie die BusyBox-Vorlage direkt in Docker. 🎜🎜----- 查看容器状态 # runc state mybusybox ----- 容器内运行进程 # runc ps mybusybox ----- 在容器中执行命令 # runc exec mybusybox ls ----- 停止容器内的任务 # runc kill mybusybox ----- 暂停容器内的所有进程 # runc pause mybusybox ----- 恢复容器内进程的执行 # runc resume mybusybox ----- 获取容器的资源使用情况 # runc events mybusybox🎜🎜🎜🎜Die Konfigurationsdatei🎜🎜🎜🎜 befindet sich im Verzeichnis
rootfs
, das neben dem Stammverzeichnis auch allgemeine Binärdateien enthält. Sie benötigen außerdem eine config.json
-Konfigurationsdatei, mit der Sie über die Runc-Spezifikation eine Konfigurationsvorlage generieren können. Code> Befehl. 🎜🎜Eine detaillierte Konfiguration finden Sie unter https://github.com/opencontainers/runtime-spec/blob/master/spec.md.🎜🎜Ändern Sie das Terminal <code class="Language-Plaintext Highlighter-Rouge"> Die Konfigurationsdatei „: true
wird in False
geändert, andernfalls ist dies nicht möglich Während der Erstellung wird tty zugewiesen, wenn runc die Verbindung trennt, ohne den Konsolen-Socket festzulegen. meldet einen Fehler. 🎜🎜Da das Terminal geschlossen ist, wird der Befehl außerdem in die Parameter "args": [ "sleep", "10000" ],
geändert. 🎜🎜🎜🎜Starten: 🎜🎜Allgemeine Befehle🎜🎜rrreee🎜🎜Hot-Migration🎜🎜 besteht darin, einen CheckPoint-Vorgang für einen Container auszuführen, eine Reihe von Dateien abzurufen und ihn dann auf anderen Computern zu starten. 🎜🎜Empfohlenes Lernen: „🎜Docker-Video-Tutorial🎜“🎜Das obige ist der detaillierte Inhalt vonWas ist Runc in Docker?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!