Différence : 1. containersd n'a pas besoin de passer par dockershim, donc la chaîne d'appels est plus courte, et docker doit passer par, donc la chaîne d'appels est plus longue 2. docker appelle cni "docker-shim", containersd appelle cni ; "conteneur-cri".
L'environnement d'exploitation de ce tutoriel : système linux7.3, version docker-1.13.1, ordinateur Dell G3.
Quelle est la différence entre containersd et docker ?
Lors de l'utilisation de k8s, la chaîne d'appel utilisant docker et containersd est la suivante :
Il n'est pas difficile de voir que lors de l'utilisation de containersd, l'appel la chaîne est plus courte, non Ensuite, vous devez passer par dockershim et docker
data directory
Je crois que tout le monde sait que le répertoire de données de docker est par défaut le répertoire /var/lib/docker lors du passage à containersd, le répertoire de données est par défaut le répertoire de données ; /var/lib/containerd
Logs
Lorsque nous utilisons k8, si nous utilisons docker comme moteur d'exécution, docker est en fait responsable du placement des journaux du programme conteneur. Les fichiers journaux sous /var/log/pod et /var/log/container seront liés aux fichiers journaux correspondants sous /var/lib/docker. Si vous devez configurer certains paramètres pour le journal, vous pouvez les modifier directement. le fichier de configuration Docker. ;Et si nous utilisons maintenant containersd comme environnement d'exécution, le kubelet sera responsable du placement des journaux du conteneur sous /var/log/container sera connecté de manière logicielle aux fichiers journaux sous /var. /log/pod. Si des ajustements sont nécessaires dans les paramètres du journal, vous devez modifier la configuration liée à kubelet
CNI
Lorsque vous utilisez docker comme environnement d'exécution, docker-shim dans kubelet est responsable de l'appel de cni et lors de l'utilisation de containersd comme ; Au moment de l'exécution, le conteneurd-cri intégré dans conteneurd est responsable de l'appel de cni
[plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/opt/cni/bin" conf_dir = "/etc/cni/net.d"
Service de streaming
Les amis qui connaissent les k8 savent que les commandes telles que kubectl exec et kubelet log doivent communiquer avec le conteneur via le apiserver, qui implique des services de streaming. L'API Docker elle-même prend en charge le fait que le docker-shim dans kubelet est transmis via le flux de l'API Docker ; mais containersd doit être configuré séparément
[plugins."io.containerd.grpc.v1.cri"] stream_idle_timeout = "4h0m0s" stream_server_address = "127.0.0.1" stream_server_port = "0" enable_tls_streaming = false
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!