{"id":96360,"date":"2024-09-18T08:00:00","date_gmt":"2024-09-18T15:00:00","guid":{"rendered":""},"modified":"2024-09-25T10:16:30","modified_gmt":"2024-09-25T17:16:30","slug":"project-copacetic-quick-and-efficient-container-image-patching","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/","title":{"rendered":"Project Copacetic: Quick and efficient container image patching"},"content":{"rendered":"\n<p>Maintaining secure container images is a major supply chain challenge due to the need to address new vulnerabilities quickly. As security threats evolve, it is crucial to keep container images up to date.&nbsp;<\/p>\n\n\n\n<p>When it comes to patching images, users currently face two main options. The first is to wait for updates from third-party authors. This process can be slow, particularly for images that have multiple publishers involved. The second option involves performing a full image rebuild. While this approach allows for more immediate control over the update process, it comes with its own set of challenges. Rebuilding images from scratch is not only time-consuming but also demands significant computational resources.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/project-copacetic\/copacetic\" target=\"_blank\" rel=\"noreferrer noopener\">Project Copacetic (Copa),<\/a> a Cloud Native Computing Foundation (<a href=\"https:\/\/www.cncf.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">CNCF<\/a>) sandbox project, enhances the image patching process, reducing turnaround time and complexity. It integrates easily into existing build infrastructure, giving users greater control over their patching timeline and reducing costs. Copa is a CLI tool written in Go and based on <a href=\"https:\/\/github.com\/moby\/buildkit\" target=\"_blank\" rel=\"noreferrer noopener\">BuildKit<\/a> (Docker\u2019s default builder) that can be used to directly patch container images by upgrading all outdated packages or performing targeted updates given the vulnerability scanning results from popular tools like <a href=\"https:\/\/github.com\/aquasecurity\/trivy\" target=\"_blank\" rel=\"noreferrer noopener\">Trivy<\/a>.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"543\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture1-1024x543.jpg\" alt=\"Graph showing the architecture overview of the workflow of Project Copacetic, starting with the container image, generating and parsing a vulnerability report, and then outputting patched image.\" class=\"wp-image-96362\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture1-1024x543.jpg 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture1-388x206.jpg 388w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture1-768x407.jpg 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture1-1536x814.jpg 1536w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture1-450x239.jpg 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture1-650x345.jpg 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture1.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>If choosing the targeting patching route over upgrading all packages, Copa uses vulnerability reports generated by scanning tools. It extends its capabilities through support for custom plug-ins through <a href=\"https:\/\/github.com\/project-copacetic\/scanner-plugin-template\" target=\"_blank\" rel=\"noreferrer noopener\">scanner templates<\/a>. This flexibility allows Copa to integrate with a variety of scanners beyond the default Trivy.&nbsp;&nbsp;<\/p>\n\n\n\n<p>By parsing the scan reports, or by checking for all outdated packages, Copa identifies essential operating system (OS) level package updates and applies them directly to the target image using BuildKit. This process creates a new patch layer on top of the original image. Copa can even patch distro-less images by leveraging external tooling.<\/p>\n\n\n\n<p>Until recently, Copa could be used locally, called in custom pipelines, or integrated in GitHub Workflows using the <a href=\"https:\/\/github.com\/project-copacetic\/copa-action\" target=\"_blank\" rel=\"noreferrer noopener\">Copa GitHub Action<\/a>. However, one of our primary goals is to make Copa accessible to as many people as possible. We\u2019ve taken a significant step towards this by introducing the Copa Docker Desktop extension, which allows you to scan, tag, and patch new images without needing any command line experience.<\/p>\n\n\n<div class=\"wp-block-msxcm-cta-block\" data-moray data-bi-an=\"CTA Block\">\n\t<div class=\"card d-block mx-ng mx-md-0\">\n\t\t<div class=\"row no-gutters material-color-brand-dark bg-fabric-green\">\n\n\t\t\t\n\t\t\t<div class=\"d-flex col-md\">\n\t\t\t\t<div class=\"card-body align-self-center p-4 p-md-5\">\n\t\t\t\t\t\n\t\t\t\t\t<h2>Project Copacetic<\/h2>\n\n\t\t\t\t\t<div class=\"mb-3\">\n\t\t\t\t\t\t<p>Directly patch container image vulnerabilities quickly without going upstream for a full rebuild.<\/p>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"link-group\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/github.com\/project-copacetic\/copacetic\" class=\"btn btn-primary bg-body text-body\" target=\"_blank\">\n\t\t\t\t\t\t\t\t<span>Learn more<\/span>\n\t\t\t\t\t\t\t\t<span class=\"glyph-append glyph-append-chevron-right glyph-append-xsmall\"><\/span>\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"col-md-4\">\n\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"560\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Manufacturing-008-1024x560.png\" class=\"card-img img-object-cover\" alt=\"Developer looking at code\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Manufacturing-008-1024x560.png 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Manufacturing-008-388x212.png 388w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Manufacturing-008-768x420.png 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Manufacturing-008-450x246.png 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Manufacturing-008-650x356.webp 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Manufacturing-008.webp 1170w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"copa-extension\">Copa Extension<\/h2>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture2-1-1024x461.webp\" alt=\"Homepage of Copa Docker Extension, with the Copa logo and an input for image to be patched.\" class=\"wp-image-96379 webp-format\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture2-1-1024x461.webp 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture2-1-388x175.webp 388w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture2-1-768x346.webp 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture2-1-450x202.webp 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture2-1-650x292.webp 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture2-1.webp 1258w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/Picture2-1-1024x461.webp\"><\/figure>\n\n\n\n<p>The Copa Extension utilizes Docker Desktop, a graphical user interface (GUI) for managing containers and images directly from your machine, and Docker Desktop Extensions, which allows you to integrate third-party tools into Docker Desktop. The only requirement to use this extension is Docker Desktop. After installing it, simply search for the extension on Docker Marketplace to install the extension.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-do-you-use-the-extension\">How do you use the extension?&nbsp;&nbsp;<\/h2>\n\n\n\n<p>When you open the extension, you\u2019ll see an input field for an image and a combo box for selecting a scanner. If you have any locally stored images that need patching, they will be automatically pulled and listed in the dropdown to autofill the input. (Note: in order to patch local images, you must have the <a href=\"https:\/\/docs.docker.com\/storage\/containerd\/\" target=\"_blank\" rel=\"noreferrer noopener\">containerd image store<\/a> feature enabled within Docker.) You can also supply custom remote images stored in a registry. Next, choose a scanner and click the \u201cscan\u201d button to start scanning the selected image. The scan results will be displayed in a simple, user-friendly format inspired by the Docker Scout vulnerability display.&nbsp;<\/p>\n\n\n\n<p>Based on the scan results, you can decide whether to patch the image. If you choose to proceed, click the \u201cpatch\u201d button to initiate a Copa scan. You\u2019ll see a loading screen, where you can optionally view the command line output of the Trivy scan and Copa patch operations. If the scan fails, you will see an error screen that describes what went wrong during the patching operation. Additionally, you can still view the command line output to determine the error. If the patch succeeds, you will see a success screen along with the name of the new patched image. You can optionally run another scan on the new patched image to ensure all fixable OS-level vulnerabilities have been resolved.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-does-it-work\">How does it work?&nbsp;<\/h2>\n\n\n\n<p>Under the hood, the extension is a front end written in React with the Material UI component library. It utilizes the extension API client, a tool that allows full interaction with the Docker CLI from the front end, to manage three image containers throughout the lifetime of the extension. It creates a Trivy container to perform scans of images, a BusyBox container to send the scan info to the front end, and a Copa container to run the patching operation. During the loading screen, the user can optionally view the command line output of the containers by clicking an arrow next to the loading text. This is achieved by streaming the output of the containers to a callback function that updates a React state variable each time new output is generated.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"get-involved\">Get involved&nbsp;<\/h2>\n\n\n\n<p>You can try out the Copa extension right now on the <a href=\"https:\/\/open.docker.com\/extensions\/marketplace?extensionId=projectcopacetic\/copacetic-docker-desktop-extension\" target=\"_blank\" rel=\"noreferrer noopener\">Docker marketplace<\/a>. We value your feedback and welcome any suggestions from the community. If you&#8217;re interested in contributing, please review our <a href=\"https:\/\/github.com\/project-copacetic\/copa-extension\/blob\/main\/contributing.md\" target=\"_blank\" rel=\"noreferrer noopener\">contribution document<\/a> to set up the correct development environment. Additionally, our <a href=\"https:\/\/github.com\/project-copacetic\/copa-extension\/issues\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub issues<\/a> page offers various ways to get involved, such as adding support for no-scanner inputs or displaying Copa\u2019s vex outputs.&nbsp;<\/p>\n\n\n\n<p>For any questions about Copa, you can reach out to us on the <a href=\"https:\/\/communityinviter.com\/apps\/cloud-native\/cncf\" target=\"_blank\" rel=\"noreferrer noopener\">CNCF Slack<\/a> or attend our on-demand <a href=\"https:\/\/docs.google.com\/document\/d\/1QdskbeCtgKcdWYHI6EXkLFxyzTCyVT6e8MgB3CaAhWI\/edit#heading=h.294j02tlxam\" target=\"_blank\" rel=\"noreferrer noopener\">bi-weekly community meetings<\/a>. We encourage all contributions and suggest starting with issues labeled &#8220;good first issue&#8221; on <a href=\"https:\/\/github.com\/project-copacetic\/copacetic\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a> if you&#8217;re new to the project. We look forward to your involvement.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><em>Authorship note:&nbsp;This blog post was co-authored by Jackson Greer (<a href=\"https:\/\/www.linkedin.com\/in\/jackson-greer-a12128235\" target=\"_blank\" rel=\"noreferrer noopener\">LinkedIn,<\/a> <a href=\"https:\/\/github.com\/jgrer\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub)<\/a>, who was an intern on the team. Thanks to Jackson for his work!&nbsp;<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Project Copacetic simplifies container image patching with a CLI tool and Docker Desktop extension.<\/p>\n","protected":false},"author":6255,"featured_media":96373,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[128],"content-type":[340],"topic":[2242],"programming-languages":[],"coauthors":[2578],"class_list":["post-96360","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-docker","content-type-tutorials-and-demos","topic-containers","review-flag-integ-1593580288-449","review-flag-new-1593580248-669"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Project Copacetic: Quick and efficient container image patching | Microsoft Open Source Blog<\/title>\n<meta name=\"description\" content=\"Learn how Project Copacetic simplifies container image patching, reducing time and complexity for secure updates.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Project Copacetic: Quick and efficient container image patching | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"Learn how Project Copacetic simplifies container image patching, reducing time and complexity for secure updates.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-18T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-25T17:16:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"923\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ashna Mehrotra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:site\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ashna Mehrotra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/ashna-mehrotra\/\",\"@type\":\"Person\",\"@name\":\"Ashna Mehrotra\"}],\"headline\":\"Project Copacetic: Quick and efficient container image patching\",\"datePublished\":\"2024-09-18T15:00:00+00:00\",\"dateModified\":\"2024-09-25T17:16:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/\"},\"wordCount\":958,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg\",\"keywords\":[\"Docker\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/\",\"name\":\"Project Copacetic: Quick and efficient container image patching | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg\",\"datePublished\":\"2024-09-18T15:00:00+00:00\",\"dateModified\":\"2024-09-25T17:16:30+00:00\",\"description\":\"Learn how Project Copacetic simplifies container image patching, reducing time and complexity for secure updates.\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg\",\"width\":1200,\"height\":923,\"caption\":\"Developer evaluating data from intelligent apps built in Azure in the context of FinTech. Persona\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Project Copacetic: Quick and efficient container image patching\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"name\":\"Microsoft Open Source Blog\",\"description\":\"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability\",\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\",\"name\":\"Microsoft Open Source Blog\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft Open Source Blog\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/OpenAtMicrosoft\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Project Copacetic: Quick and efficient container image patching | Microsoft Open Source Blog","description":"Learn how Project Copacetic simplifies container image patching, reducing time and complexity for secure updates.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/","og_locale":"en_US","og_type":"article","og_title":"Project Copacetic: Quick and efficient container image patching | Microsoft Open Source Blog","og_description":"Learn how Project Copacetic simplifies container image patching, reducing time and complexity for secure updates.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2024-09-18T15:00:00+00:00","article_modified_time":"2024-09-25T17:16:30+00:00","og_image":[{"width":1200,"height":923,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg","type":"image\/jpeg"}],"author":"Ashna Mehrotra","twitter_card":"summary_large_image","twitter_image":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Ashna Mehrotra","Est. reading time":"4 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/ashna-mehrotra\/","@type":"Person","@name":"Ashna Mehrotra"}],"headline":"Project Copacetic: Quick and efficient container image patching","datePublished":"2024-09-18T15:00:00+00:00","dateModified":"2024-09-25T17:16:30+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/"},"wordCount":958,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg","keywords":["Docker"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/","url":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/","name":"Project Copacetic: Quick and efficient container image patching | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg","datePublished":"2024-09-18T15:00:00+00:00","dateModified":"2024-09-25T17:16:30+00:00","description":"Learn how Project Copacetic simplifies container image patching, reducing time and complexity for secure updates.","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/09\/CLO24-Azure-Fintech-013.jpg","width":1200,"height":923,"caption":"Developer evaluating data from intelligent apps built in Azure in the context of FinTech. Persona"},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2024\/09\/18\/project-copacetic-quick-and-efficient-container-image-patching\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Project Copacetic: Quick and efficient container image patching"}]},{"@type":"WebSite","@id":"https:\/\/opensource.microsoft.com\/blog\/#website","url":"https:\/\/opensource.microsoft.com\/blog\/","name":"Microsoft Open Source Blog","description":"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability","publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/opensource.microsoft.com\/blog\/#organization","name":"Microsoft Open Source Blog","url":"https:\/\/opensource.microsoft.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft Open Source Blog"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/OpenAtMicrosoft"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Open Source Blog","distributor_original_site_url":"https:\/\/opensource.microsoft.com\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/96360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/users\/6255"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=96360"}],"version-history":[{"count":11,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/96360\/revisions"}],"predecessor-version":[{"id":96426,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/96360\/revisions\/96426"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/96373"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=96360"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=96360"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=96360"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=96360"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=96360"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=96360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}