Maison > Article > Opération et maintenance > Qu'est-ce que runc dans Docker
Dans Docker, RunC est un outil CLI permettant de créer et d'exécuter des conteneurs selon les normes OCI, un outil de ligne de commande pour exécuter des conteneurs qui suivent les normes OCI. runC est la partie centrale de docker. La création, l'exécution, la destruction et d'autres opérations du conteneur seront éventuellement complétées par l'appel de runc.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, version docker-1.13.1, ordinateur Dell G3.
OCI définit la norme d'exécution du conteneur, et runC est une implémentation spécifique développée par Docker conformément à la norme de format de conteneur ouvert Open Container Format, OCF.
Ce projet est migré depuis le libcontainer de Docker et implémente des fonctions telles que le démarrage et l'arrêt du conteneur, l'isolation des ressources, etc. Par conséquent, le conteneur peut être exécuté directement via cet outil.
Le soi-disant environnement d'exécution de conteneur (Container Runtime) comprend la gestion des conteneurs et l'imagerie des conteneurs, OCI est la norme de l'industrie pour l'exécution de conteneurs, comprenant :
A) Norme d'exécution runtime-spec ;
B) Norme d'image de conteneur image-spec.
En termes simples, la norme d'image de conteneur définit la forme d'emballage de l'image de conteneur et la norme d'exécution définit comment exécuter un conteneur.
RunC est un outil CLI qui crée et exécute des conteneurs selon les normes OCI. Il s'agit d'un outil de ligne de commande pour exécuter des conteneurs qui suivent les normes OCI.
Docker
Dans l'ancienne version, vous devez appeler docker-runc
, mais dans la dernière version CE, il est directement modifié à la commande 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 est l'état d'exécution du conteneur et n'inclut pas la gestion des images. Si vous l'utilisez directement, vous devez d'abord préparer l'image. Ici, vous pouvez directement utiliser le. modèle BusyBox déjà construit.
🎜🎜🎜OCI Bundle fait référence à une série de fichiers qui répondent à la norme OCI. Ces fichiers contiennent toutes les données nécessaires à l'exécution du conteneur. Ils sont stockés dans un répertoire commun, qui contient les deux éléments suivants. : 🎜config.json
Contient les données de configuration pour l'exécution du conteneur docker export
pour exporter l'image existante au format OCI Bundle . 🎜🎜🎜🎜Générer rootfs🎜🎜🎜🎜Utilisez le modèle BusyBox directement dans Docker. 🎜🎜----- 查看容器状态 # runc state mybusybox ----- 容器内运行进程 # runc ps mybusybox ----- 在容器中执行命令 # runc exec mybusybox ls ----- 停止容器内的任务 # runc kill mybusybox ----- 暂停容器内的所有进程 # runc pause mybusybox ----- 恢复容器内进程的执行 # runc resume mybusybox ----- 获取容器的资源使用情况 # runc events mybusybox🎜🎜🎜🎜Le fichier de configuration🎜🎜🎜🎜 se trouve dans le répertoire
rootfs
, qui contient les fichiers binaires courants en plus du répertoire racine, vous avez également besoin d'un fichier de configuration config.json
pouvant générer un modèle de configuration via la spécification runc code> commande. 🎜🎜Pour une configuration détaillée, veuillez vous référer à https://github.com/opencontainers/runtime-spec/blob/master/spec.md🎜🎜Modifiez le <code class="langage-plaintext highlighter-rouge">"terminal dans le fichier de configuration ":true
est remplacé par faux
, sinon ce sera impossible lors de la création, allouez tty si runc se détache sans définir le socket de la console
signale une erreur. 🎜🎜De plus, le terminal étant fermé, la commande est modifiée en paramètres "args": [ "sleep", "10000" ],
. 🎜🎜🎜🎜Démarrer🎜🎜🎜🎜rrreee🎜🎜Après le démarrage, vous pouvez voir les commandes spécifiques via ps aux | grep sleep
. 🎜🎜Commandes communes🎜🎜rrreee🎜🎜La migration à chaud🎜🎜 consiste à effectuer une opération CheckPoint sur un conteneur et à obtenir une série de fichiers, puis à la démarrer sur d'autres machines. 🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo Docker🎜"🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!