{"id":33533,"date":"2023-04-23T16:54:16","date_gmt":"2023-04-23T16:54:16","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=33533"},"modified":"2023-04-23T16:54:18","modified_gmt":"2023-04-23T16:54:18","slug":"container-runtime-interface-cri-o-workflow","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/container-runtime-interface-cri-o-workflow\/","title":{"rendered":"Container Runtime Interface (CRI-O) workflow"},"content":{"rendered":"\n<p><strong>Let&#8217;s break the workflow :<\/strong><\/p>\n\n\n\n<p>\u2705 When a request comes to start a #container, #kubelet calls the CRI that invokes the internal CRI-O daemon in the #kernel<br>\u2705 The daemon uses a compliant storage and image library on disk<br>\u2705 The CRI-O interacts with a remote registry to pull the image if not present on disk while the daemon exposes a [#grpc] server with endpoints to create, start, stop (and many more other actions) on the #containers.<br>\u2705 Under the hood, cri-o can use any OCI-compliant [low-level] runtimes to work with containers<br>\u2705 However the default one is again #runc that interacts with #linux kernel to invoke processes in namespace &amp; #Cgroup context!<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"989\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/Container-Runtime-Interface-CRI-O-workflow-1024x989.jpeg\" alt=\"\" class=\"wp-image-33534\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/Container-Runtime-Interface-CRI-O-workflow-1024x989.jpeg 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/Container-Runtime-Interface-CRI-O-workflow-300x290.jpeg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/Container-Runtime-Interface-CRI-O-workflow-768x742.jpeg 768w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/Container-Runtime-Interface-CRI-O-workflow-1536x1484.jpeg 1536w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/Container-Runtime-Interface-CRI-O-workflow.jpeg 1590w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s break the workflow : \u2705 When a request comes to start a #container, #kubelet calls the CRI that invokes the internal CRI-O daemon in the #kernel\u2705 The daemon uses a compliant storage and image library on disk\u2705 The CRI-O interacts with a remote registry to pull the image if not present on disk while&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-33533","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/33533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=33533"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/33533\/revisions"}],"predecessor-version":[{"id":33535,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/33533\/revisions\/33535"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=33533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=33533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=33533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}