Heim >Betrieb und Instandhaltung >Docker >Was ist Runc in Docker?

Was ist Runc in Docker?

青灯夜游
青灯夜游Original
2021-12-30 15:45:576602Durchsuche

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.

Was ist Runc in Docker?

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.

Einführung

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 命令。

Was ist Runc in Docker?

RunC 作为容器的最底层运行环境,其上层通过 Docker 进行管理。

runC就是docker中最为核心的部分,容器的创建,运行,销毁等等操作最终都将通过调用runc完成。

独立运行

RunC 作为容器的运行态,不包含镜像的管理,如果直接使用,需要先准备好镜像,这里直接使用已经构建好的 BusyBox 模板。

OCI Bundle

OCI Bundle 是指满足 OCI 标准的一系列文件,这些文件包含了运行容器所需要的所有数据,它们存放在一个共同的目录,该目录包含以下两项:

  • config.json 包含容器运行的配置数据;
  • 容器的 root filesystem 。

如果主机上安装了 Docker,那么可以使用 docker export 命令将已有镜像导出为 OCI Bundle 的格式。

生成 rootfs

直接使用 Docker 中的 BusyBox 模板。

----- 下载最新的版本
$ docker pull busybox

----- 创建rootfs
$ mkdir rootfs
$ docker export $(docker create busybox) | tar -C rootfs -xvf -

配置文件

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" ], 参数。

启动

----- 创建容器并查看状态
# runc create mybusybox
# runc list

----- 启动容器,并查看状态
# runc start mybusybox

----- 删除容器
# runc delete mybusybox

在启动了之后,可以通过 ps aux | grep sleep

Was ist Runc in Docker?

RunC Da es sich um die unterste Betriebsumgebung des Containers handelt, wird seine obere Schicht über Docker verwaltet.
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.

Unabhängig ausführen

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

🎜🎜🎜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.
  • Das Root-Dateisystem des Containers.
🎜Wenn Docker auf dem Host installiert ist, können Sie den Befehl 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!

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