{"id":33999,"date":"2016-08-15T15:08:21","date_gmt":"2016-08-15T12:08:21","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=33999"},"modified":"2018-08-01T17:10:35","modified_gmt":"2018-08-01T14:10:35","slug":"how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/","title":{"rendered":"How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego"},"content":{"rendered":"<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png\" alt=\"\" width=\"180\" class=\"alignright size-full wp-image-34005\" \/><\/a><\/p>\n<p>In this post, we will go over two solutions for those who cannot have their data in the open: private Docker registries and Diego Docker Cache. Below, you will find installation steps for both and a demo of how to deploy Diego Docker Cache.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#Prerequisites\" >Prerequisites<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#How_Docker_containers_work_with_Diego\" >How Docker containers work with Diego<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#Options_for_storing_Docker_images_privately\" >Options for storing Docker images privately<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#Option_1_A_private_Docker_registry\" >Option #1: A private Docker registry<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#Option_2_Diego_Docker_Cache\" >Option #2: Diego Docker Cache<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#Can_I_have_a_private_Docker_registry_and_caching_too\" >Can I have a private Docker registry and caching, too?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Prerequisites\"><\/span>Prerequisites<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>These features were tested against the <a href=\"https:\/\/github.com\/cloudfoundry-attic\/cf-release\/tree\/v234\" target=\"_blank\">Cloud Foundry release v234<\/a> and the corresponding <a href=\"https:\/\/github.com\/cloudfoundry\/diego-release\/tree\/v0.1463.0\" target=\"_blank\">Diego release v0.1463.0<\/a> on an OpenStack deployment. (If you are not familiar with Diego, check out <a href=\"https:\/\/github.com\/cloudfoundry\/diego-design-notes\/blob\/master\/docker-support.md#pushing-a-docker-image-with-the-cf-cli\" target=\"_blank\">this GitHub repo<\/a> to learn how to run Docker images on Cloud Foundry.)<\/p>\n<p>This post assumes that you are fairly comfortable with BOSH, Cloud Foundry\u2019s native deployment tool, since both solutions come as BOSH releases. You do not have to use BOSH to install a registry for Docker, but I strongly recommend that you do, because:<\/p>\n<ul>\n<li>BOSH is good at working with image storage.<\/li>\n<li>BOSH can easily scale your registry when you run out of space.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_Docker_containers_work_with_Diego\"><\/span>How Docker containers work with Diego<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>First of all, let\u2019s define what Docker containers and images are. An <em>image<\/em> is a read-only set of root file system changes and corresponding startup parameters. A <em>container<\/em> is a runtime instance of an image.<\/p>\n<p>To support containers, Diego uses the <a href=\"https:\/\/github.com\/cloudfoundry-attic\/garden-linux\" target=\"_blank\">Garden Linux<\/a> back end, which can create Linux containers using <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">namespaces<\/code> and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">cgroups<\/code>\u2014core features of the Linux kernel. With <a href=\"https:\/\/github.com\/cloudfoundry\/garden\" target=\"_blank\">Garden<\/a>, you can extract all Docker image layers and then use Docker libraries to unite and mount them as a root file system. For more information about Docker support in Diego, see <a href=\"https:\/\/cf-p1-docs-prod.cfapps.io\/pivotalcf\/concepts\/docker.html\" target=\"_blank\">this documentation<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Options_for_storing_Docker_images_privately\"><\/span>Options for storing Docker images privately<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Docker images are usually stored in a registry. By default, Docker uses the public <a href=\"https:\/\/hub.docker.com\" target=\"_blank\">Docker Hub<\/a> registry and interacts with it through the <a href=\"https:\/\/docs.docker.com\/registry\/spec\/api\/\" target=\"_blank\">Docker Registry HTTP API<\/a>. Those who would like to hide their images from the rest of the world have several options, the most obvious ones being:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">Setting up their own Docker registry in a private cloud.<\/li>\n<li>Getting a private registry on Docker Hub and using Diego Docker Cache to push images to Diego. As the name suggests, Diego Docke Cache also adds features for caching Docker images. This helps you to stay independent from Docker Hub availability and speed up scaling of apps.<\/li>\n<\/ul>\n<p>Let\u2019s take a closer look at each of the solutions.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Option_1_A_private_Docker_registry\"><\/span>Option #1: A private Docker registry<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A stand-alone Docker registry is the most straightforward way to make your Docker images private and still be able to push them to Diego. Getting one is easy:<\/p>\n<ol>\n<li style=\"margin-bottom: 6px;\">Download and deploy the <a href=\"https:\/\/github.com\/cloudfoundry-community\/docker-registry-boshrelease\" target=\"_blank\">Docker Registry BOSH release<\/a> (see the <a href=\"https:\/\/github.com\/cloudfoundry-community\/docker-registry-boshrelease\/blob\/master\/README.md\" target=\"_blank\">README file<\/a> for installation steps).<\/li>\n<li>Provide Cloud Foundry with the address of the private registry by passing the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">insecure_docker_registry_list<\/code> property into your <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">property-overrides<\/code> stub file for the Diego deployment. See <a href=\"https:\/\/github.com\/cloudfoundry\/diego-release\/blob\/7cc8012e1bed8f42f5e5dffca5a5adc17ba0d680\/manifest-generation\/diego.yml#L654\" target=\"_blank\">this example<\/a> from the Diego manifest generation stubs.<\/li>\n<\/ol>\n<p>After completing the steps, you should be able to push images using the Cloud Foundry CLI:<\/p>\n<pre style=\"padding-left: 30px;\">cf push myapp \u2013o docker-registry.example.com:5000\/myapp<\/pre>\n<p><\/p>\n<p>As a short summary, I would recommend a self-hosted Docker registry under the following circumstances: <\/p>\n<ul>\n<li>You want to have an unlimited number of private Docker repositories.<\/li>\n<li>You need to stay independent from third-party services.<\/li>\n<li>You have to keep all images inside your private cloud.<\/li>\n<li>You don\u2019t want to be affected by network bandwidth.<\/li>\n<\/ul>\n<p>If you decide to roll out your own registry, keep in mind that:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">Your will be solely responsible for supporting the self-hosted Docker registry. This also means you will need to be prepared for and deal with any disasters.<\/li>\n<li style=\"margin-bottom: 6px;\">For small teams, a private Docker registry (e.g., on S3) may turn out to be much more expensive than using Docker Hub.<\/li>\n<li>No UI is available, so it will probably be hard to search and maintain the image storage.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Option_2_Diego_Docker_Cache\"><\/span>Option #2: Diego Docker Cache<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The second option is to use a private Docker Hub repository and <a href=\"https:\/\/github.com\/cloudfoundry-attic\/diego-docker-cache-release\" target=\"_blank\">Diego Docker Cache<\/a>\u2014a BOSH-manageable release that consists of two parts: a Docker registry and caching support for Diego.<\/p>\n<p>To successfully push a private Docker image to Cloud Foundry, you will need to provide Docker Hub credentials during the application staging process. This can be done with the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">cf curl<\/code> command. I have prepared a <a href=\"https:\/\/gist.github.com\/Infra-Red\/7e4c5c2cb5e96760fc6d45abdadfff52\" target=\"_blank\">small script<\/a> that helps to simplify this procedure. Below, you can find a demo that demonstrates the process. As a result, we will get a running application, which was pushed from a private Docker Hub repository.<\/p>\n<p><center><iframe loading=\"lazy\" width=\"480\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/IqwnigN0tpg\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<p>By adding the caching capabilities, we can solve the following problems:<\/p>\n<ul>\n<li>Speed up the application scaling process<\/li>\n<li>Become independent of Docker Hub availability<\/li>\n<li>Get a way to push private Docker Hub images to Diego<\/li>\n<\/ul>\n<p>The main issue with Diego Docker Cache is that the whole caching process runs inside a Garden container where the OverlayFS file system is not available. So, it may take a lot of time and resources for initial application staging.<\/p>\n<p>In order to avoid failures during staging, I suggest that you change disk size for the staging process. To do that, update <a href=\"https:\/\/gist.github.com\/Infra-Red\/149656c06585f99539e5291e739268ca\" target=\"_blank\">these properties<\/a> in the Cloud Foundry deployment manifest and configure it in accordance with your environment.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Can_I_have_a_private_Docker_registry_and_caching_too\"><\/span>Can I have a private Docker registry and caching, too?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When choosing storage for your Docker images, start by considering your actual needs and possibilities. Even if you end up using a self-managed Docker registry, I would still recommend that you install Docker Cache. It will help you to stay independent of the image storage and ensure that your apps can be scaled up regardless of registry availability. So, the answer is &#8220;Yes, you can.&#8221;<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-containers-warden-docker-and-garden\/\">Cloud Foundry Containers: Warden, Docker, and Garden<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-garden-back-ends-container-security-and-debugging-oss-cf\/\">Cloud Foundry\u2019s Garden: Back Ends, Container Security, and Debugging<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/are-diego-and-docker-really-good-friends\/\">Are Diego and Docker Really Good Friends?<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<\/p>\n<p>In this post, we will go over two solutions for those who cannot have their data in the open: private Docker registries and Diego Docker Cache. Below, you will find installation steps for both and a demo of how to deploy Diego Docker Cache.<\/p>\n<p>&nbsp;<\/p>\n<p>Prerequisites<\/p>\n<p>These features were tested against the Cloud [&#8230;]<\/p>\n","protected":false},"author":130,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,570,206],"class_list":["post-33999","post","type-post","status-publish","format-standard","hentry","category-tutorials","tag-cloud-native","tag-containers","tag-oss-cloud-foundry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego | Altoros<\/title>\n<meta name=\"description\" content=\"Diego has brought Docker to Cloud Foundry, but only public Docker images are supported out-of-the-box. Learn about two options to resolve this challenge.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego | Altoros\" \/>\n<meta property=\"og:description\" content=\"In this post, we will go over two solutions for those who cannot have their data in the open: private Docker registries and Diego Docker Cache. Below, you will find installation steps for both and a demo of how to deploy Diego Docker Cache. &nbsp; Prerequisites These features were tested against the Cloud [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-15T12:08:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-08-01T14:10:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"356\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andrei Krasnitski\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrei Krasnitski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/\",\"name\":\"How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png\",\"datePublished\":\"2016-08-15T12:08:21+00:00\",\"dateModified\":\"2018-08-01T14:10:35+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/6892b9fdca5c24cb7b47ac7b077382db\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/6892b9fdca5c24cb7b47ac7b077382db\",\"name\":\"Andrei Krasnitski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/02\/andrei-krasnitski-150x150.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/02\/andrei-krasnitski-150x150.jpg\",\"caption\":\"Andrei Krasnitski\"},\"description\":\"Andrei Krasnitski is a Cloud Foundry Engineer at Altoros. He has 5+ years of experience in cloud infrastructures and platforms automation, enterprise-level service integrations, and cloud environment troubleshooting. Andrei is building and supporting Cloud Foundry environments for Altoros\u2019s enterprise customers.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/andrei-krasnitski\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego | Altoros","description":"Diego has brought Docker to Cloud Foundry, but only public Docker images are supported out-of-the-box. Learn about two options to resolve this challenge.","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:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/","og_locale":"en_US","og_type":"article","og_title":"How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego | Altoros","og_description":"In this post, we will go over two solutions for those who cannot have their data in the open: private Docker registries and Diego Docker Cache. Below, you will find installation steps for both and a demo of how to deploy Diego Docker Cache. &nbsp; Prerequisites These features were tested against the Cloud [...]","og_url":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/","og_site_name":"Altoros","article_published_time":"2016-08-15T12:08:21+00:00","article_modified_time":"2018-08-01T14:10:35+00:00","og_image":[{"width":512,"height":356,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png","type":"image\/png"}],"author":"Andrei Krasnitski","twitter_misc":{"Written by":"Andrei Krasnitski","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/","url":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/","name":"How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png","datePublished":"2016-08-15T12:08:21+00:00","dateModified":"2018-08-01T14:10:35+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/6892b9fdca5c24cb7b47ac7b077382db"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/docker_new_logo-v1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/how-to-push-private-docker-images-and-enable-caching-on-cloud-foundry-diego\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Push Private Docker Images and Enable Caching on Cloud Foundry Diego"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/6892b9fdca5c24cb7b47ac7b077382db","name":"Andrei Krasnitski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/02\/andrei-krasnitski-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/02\/andrei-krasnitski-150x150.jpg","caption":"Andrei Krasnitski"},"description":"Andrei Krasnitski is a Cloud Foundry Engineer at Altoros. He has 5+ years of experience in cloud infrastructures and platforms automation, enterprise-level service integrations, and cloud environment troubleshooting. Andrei is building and supporting Cloud Foundry environments for Altoros\u2019s enterprise customers.","url":"https:\/\/www.altoros.com\/blog\/author\/andrei-krasnitski\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/33999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/130"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=33999"}],"version-history":[{"count":9,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/33999\/revisions"}],"predecessor-version":[{"id":34161,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/33999\/revisions\/34161"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=33999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=33999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=33999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}