{"id":19009,"date":"2017-10-20T12:15:31","date_gmt":"2017-10-20T09:15:31","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=19009"},"modified":"2017-10-20T11:11:13","modified_gmt":"2017-10-20T08:11:13","slug":"overview-kontena-platform","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/","title":{"rendered":"An Overview of the Kontena Platform"},"content":{"rendered":"<p>Back in <a href=\"https:\/\/www.webcodegeeks.com\/web-development\/shortlist-docker-hosting\/\">my Docker hosting post<\/a>, I noted that deploying and orchestrating containers live was still a missing step in the Docker workflow for many developers. A handful of complex orchestration tools entered to fill the void, with large cloud companies offering to host your setup for you. In that post, I intentionally avoided tools that sat in the middle of this process by helping you to deploy containers to cloud services, but there are plenty of them, including <a href=\"https:\/\/cloud.docker.com\/\">Docker\u2019s own official cloud service<\/a>. There is still plenty of opportunity for similar services and less than a month ago, I heard of a new option, <a href=\"https:\/\/kontena.io\/\">Kontena<\/a>.<\/p>\n<p>Kontena is a (<a href=\"https:\/\/kontena.io\/pricing\">moderately expensive<\/a>) SaaS platform that you can install on cloud providers or your own hardware. A lot of the core code is <a href=\"https:\/\/github.com\/kontena\/kontena\">open source<\/a>, but I\u2019m unclear if you can run the platform without paying for it.<\/p>\n<p>For any of you already experienced with core Docker tools like Swarm and Compose, Kontena follows similar patterns but adds features to them specific to the platform. Again, this is a common path to follow for similar existing services.<\/p>\n<p>Kontena has a <a href=\"https:\/\/kontena.io\/docs\/quick-start.html\">great quick start guide<\/a>, so I will use that as a base to discuss the platform further.<\/p>\n<h2>Set Up the Platform<\/h2>\n<p>You can create your platform of nodes using a <a href=\"https:\/\/kontena.io\/docs\/tools\/cli.html\">CLI tool<\/a> or a web interface. The CLI tool offers a lot more options, and the web interface is better suited to monitoring. Kontena supports cloud hosting (for extra charges) with <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/install-nodes\/aws-ec2.html\">AWS EC2<\/a>, <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/install-nodes\/azure.html\">Azure<\/a>, <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/install-nodes\/digitalocean.html\">DigitalOcean<\/a>, <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/install-nodes\/packet.html\">Packet<\/a>, and <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/install-nodes\/upcloud.html\">UpCloud<\/a>. You can also add nodes manually to <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/install-nodes\/ubuntu.html\">Ubuntu<\/a> and <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/install-nodes\/container-linux.html\">Container Linux<\/a> hosts or use <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/install-nodes\/docker-compose.html\">Docker Compose<\/a> to streamline the process further.<\/p>\n<p>For this article (and in Kontena\u2019s quick start), I used a Vagrant installation, which still shows up in the Kontena portal. It looks like their system images are based on <a href=\"https:\/\/blog.codeship.com\/an-introduction-to-coreos\/\">CoreOS<\/a>, which opens the platform to a lot of potential.<\/p>\n<p>Next, create your platform and give it a name. You can use the web interface or the CLI tool.<\/p>\n<pre class=\"brush:php\">kontena cloud platform create &lt;PLATFORM_NAME&gt;<\/pre>\n<figure id=\"attachment_19011\" aria-describedby=\"caption-attachment-19011\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-platform.jpg\"><img decoding=\"async\" class=\"wp-image-19011\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-platform.jpg\" alt=\"\" width=\"860\" height=\"579\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-platform.jpg 1280w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-platform-300x202.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-platform-768x517.jpg 768w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-platform-1024x690.jpg 1024w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19011\" class=\"wp-caption-text\">Create a platform<\/figcaption><\/figure>\n<p>The first subcommand (<code>cloud<\/code>) allows you to interact with aspects of the cloud service, such as the infrastructure, individual nodes, containers, and storage volumes.<\/p>\n<h2>Add Nodes<\/h2>\n<p>With a platform created, you need to add individual nodes to it. Kontena will treat all nodes as part of the service, no matter where you host each one.<\/p>\n<p>You add nodes from the CLI tool, selecting the appropriate provider. For example, with Vagrant, it\u2019s the following:<\/p>\n<pre class=\"brush:php\">kontena vagrant node create<\/pre>\n<p>And for AWS, it\u2019s:<\/p>\n<pre class=\"brush:php\">kontena aws node create<\/pre>\n<figure id=\"attachment_19012\" aria-describedby=\"caption-attachment-19012\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-node.jpg\"><img decoding=\"async\" class=\"wp-image-19012\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-node.jpg\" alt=\"\" width=\"860\" height=\"561\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-node.jpg 1280w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-node-300x196.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-node-768x501.jpg 768w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-node-1024x668.jpg 1024w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19012\" class=\"wp-caption-text\">Add nodes<\/figcaption><\/figure>\n<p>You can view all your current nodes with the following CLI command:<\/p>\n<pre class=\"brush:php\">kontena node list<\/pre>\n<p>or under the <em>Nodes<\/em> tab of the web interface:<\/p>\n<figure id=\"attachment_19013\" aria-describedby=\"caption-attachment-19013\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-nodes.jpg\"><img decoding=\"async\" class=\"wp-image-19013\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-nodes.jpg\" alt=\"\" width=\"860\" height=\"467\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-nodes.jpg 1280w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-nodes-300x163.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-nodes-768x417.jpg 768w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-nodes-1024x556.jpg 1024w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19013\" class=\"wp-caption-text\">See all nodes<\/figcaption><\/figure>\n<h2>Create an Application Stack<\/h2>\n<p>Now that the infrastructure is ready, it\u2019s time to create an application, or \u201cstack\u201d in Kontena terminology. You create stacks by defining a \u2018<a href=\"https:\/\/kontena.io\/docs\/using-kontena\/stack-file.html\">stack file<\/a>\u2018 that is like a Docker Compose file, with some extra values to match the Kontena platform.<\/p>\n<p>You can see what stacks you are running with the following command:<\/p>\n<pre class=\"brush:php\">kontena stack ls<\/pre>\n<p>Or details of an individual stack with:<\/p>\n<pre class=\"brush:php\">kontena service show &lt;STACK_NAME&gt;\/&lt;SERVICE_NAME&gt;<\/pre>\n<p>There isn\u2019t a specific tab in the web interface for stacks, but individual tabs exist for each component of a stack; for this example, <em>Services<\/em> and <em>Vault<\/em> (for secrets management).<\/p>\n<figure id=\"attachment_19014\" aria-describedby=\"caption-attachment-19014\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-services.jpg\"><img decoding=\"async\" class=\"wp-image-19014\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-services.jpg\" alt=\"\" width=\"860\" height=\"559\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-services.jpg 1280w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-services-300x195.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-services-768x499.jpg 768w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-services-1024x666.jpg 1024w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19014\" class=\"wp-caption-text\">Services tab<\/figcaption><\/figure>\n<figure id=\"attachment_19015\" aria-describedby=\"caption-attachment-19015\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-vault.jpg\"><img decoding=\"async\" class=\"wp-image-19015\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-vault.jpg\" alt=\"\" width=\"860\" height=\"316\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-vault.jpg 1280w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-vault-300x110.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-vault-768x282.jpg 768w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-vault-1024x376.jpg 1024w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19015\" class=\"wp-caption-text\">Vault tab<\/figcaption><\/figure>\n<h2>Run Your Application<\/h2>\n<p>Accessing your application depends slightly on where the nodes in your platform are hosted. Using the <code>kontena service show<\/code> command and clicking through to service details in the web application will show you the public IP and DNS addresses. However, if you are using Vagrant, you will need the private IP address, which you can find with:<\/p>\n<pre class=\"brush:php\">kontena node show &lt;PUBLIC_NODE_NAME&gt; | grep 'private ip'<\/pre>\n<figure id=\"attachment_19016\" aria-describedby=\"caption-attachment-19016\" style=\"width: 788px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-ip.jpg\"><img decoding=\"async\" class=\"wp-image-19016 size-full\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-ip.jpg\" alt=\"\" width=\"788\" height=\"256\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-ip.jpg 788w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-ip-300x97.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-ip-768x250.jpg 768w\" sizes=\"(max-width: 788px) 100vw, 788px\" \/><\/a><figcaption id=\"caption-attachment-19016\" class=\"wp-caption-text\">IP and DNS details<\/figcaption><\/figure>\n<p>Kontena also provides an overview of resource usage and logs of all your nodes and services in the web application, as well as a briefer overview from the command line:<\/p>\n<pre class=\"brush:php\">kontena service stats &lt;STACK_NAME&gt;\/&lt;SERVICE_NAME&gt;<\/pre>\n<figure id=\"attachment_19017\" aria-describedby=\"caption-attachment-19017\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-overview.jpg\"><img decoding=\"async\" class=\"wp-image-19017\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-overview.jpg\" alt=\"\" width=\"860\" height=\"553\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-overview.jpg 1280w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-overview-300x193.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-overview-768x494.jpg 768w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/10\/kontena-overview-1024x658.jpg 1024w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19017\" class=\"wp-caption-text\">Overview tab<\/figcaption><\/figure>\n<p>For more fine-grained and long-term statistics collection, Kontena allows you to connect platforms to external collection services using the <a href=\"https:\/\/github.com\/b\/statsd_spec\">StatsD protocol<\/a>. You do this using the <code>grid<\/code> subcommand that is generally used for self-hosted Kontena platforms, but you can also use it to customize the SaaS platform.<\/p>\n<pre class=\"brush:php\">kontena grid update --statsd-server &lt;STATSD_SERVER&gt;:8086 &lt;GRID_NAME&gt;<\/pre>\n<p>The grid typically has the same name as the platform, but if you want to check, use the following command:<\/p>\n<pre class=\"brush:php\">kontena grid list<\/pre>\n<h3>Secrets management<\/h3>\n<p>I briefly mentioned secrets management above. This is a growing trend in container-based infrastructures; I\u2019ve written about <a href=\"https:\/\/www.webcodegeeks.com\/devops\/docker-secrets-management\/\">Docker\u2019s own secrets management<\/a> and <a href=\"https:\/\/blog.codeship.com\/hashicorp-tools-useful-in-ci\/\">HashiCorp\u2019s Vault<\/a>. I\u2019m not sure what Kontena uses, but the principles are the same.<\/p>\n<pre class=\"brush:php\">kontena vault write &lt;NAME&gt; &lt;VALUE&gt;\r\nkontena vault read &lt;NAME&gt;<\/pre>\n<p>Or more practically, you can share the secrets in the <em>kontena.yml<\/em> file:<\/p>\n<pre class=\"brush:sql\">services:\r\n  wordpress:\r\n  \u2026\r\n    environment:\r\n      WORDPRESS_DB_HOST: mysql\r\n      WORDPRESS_DB_USER: wordpress\r\n      WORDPRESS_DB_NAME: wordpress\r\n    secrets:\r\n      - secret: wordpress-mysql-password\r\n        name: WORDPRESS_DB_PASSWORD\r\n        type: env\r\n  mysql:\r\n    \u2026\r\n    environment:\r\n      MYSQL_DATABASE: wordpress\r\n      MYSQL_USER: wordpress\r\n    secrets:\r\n      - secret: wordpress-mysql-root\r\n        name: MYSQL_ROOT_PASSWORD\r\n        type: env\r\n      - secret: wordpress-mysql-password\r\n        name: MYSQL_PASSWORD\r\n        type: env<\/pre>\n<p>Kontena also adds <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/vault.html#using-letsencrypt-certificates\">certificate management<\/a> with <a href=\"https:\/\/letsencrypt.org\/\">LetsEncrypt<\/a>, allowing you to manage the entire process from the CLI tool.<\/p>\n<h3>Load balancing<\/h3>\n<p>Kontena includes support for <a href=\"https:\/\/kontena.io\/docs\/using-kontena\/loadbalancer.html\">load balancing<\/a>, which you define in your <em>kontena.yml<\/em> file and then link services to it.<\/p>\n<pre class=\"brush:php\">cs_loadbalancer:\r\n  image: kontena\/lb:latest\r\n  ports:\r\n    - 80:80\r\nwordpress:\r\n  \u2026\r\n  environment:\r\n    WORDPRESS_DB_HOST: mysql\r\n    WORDPRESS_DB_USER: wordpress\r\n    WORDPRESS_DB_NAME: wordpress\r\n    KONTENA_LB_INTERNAL_PORT: 80\r\n  links:\r\n    - cs_loadbalancer<\/pre>\n<p>And the load balancer will now appear in your list of active services.<\/p>\n<h3>Volumes<\/h3>\n<p><a href=\"https:\/\/kontena.io\/docs\/using-kontena\/volumes.html\">Kontena volumes<\/a> work in a similar way to volumes in Docker, but add the ability to define the \u2018scope\u2019 of a mounted volume and if it\u2019s accessible to each instance, stack, or across the whole platform. There\u2019s a parameter for defining the driver, but I couldn\u2019t find any details on what\u2019s supported.<\/p>\n<pre class=\"brush:php\">kontena volume create --driver &lt;DRIVER&gt; --scope &lt;SCOPE&gt; &lt;VOLUME_NAME&gt;<\/pre>\n<h2>All You Need?<\/h2>\n<p>Kontena is a developer-friendly and easy-to-use platform, with a lot of compelling features to suit a lot of complex application stacks. But bearing in mind you also have to pay hosting costs, is it worth the price versus running your own Mesos or Kubernetes cluster?<\/p>\n<p>As with many SaaS platforms, you offset convenience for developer time spent. I\u2019d love to know if you think the feature list justifies the price.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Web Code Geeks with permission by Chris Ward, partner at our <a href=\"http:\/\/www.webcodegeeks.com\/join-us\/wcg\/\" target=\"_blank\" rel=\"noopener\">WCG program<\/a>. See the original article here: <a href=\"https:\/\/blog.codeship.com\/an-overview-of-the-kontena-platform\/\" target=\"_blank\" rel=\"noopener\">An Overview of the Kontena Platform<\/a><\/p>\n<p>Opinions expressed by Web Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Back in my Docker hosting post, I noted that deploying and orchestrating containers live was still a missing step in the Docker workflow for many developers. A handful of complex orchestration tools entered to fill the void, with large cloud companies offering to host your setup for you. In that post, I intentionally avoided tools &hellip;<\/p>\n","protected":false},"author":148,"featured_media":10356,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[217,495],"class_list":["post-19009","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-docker","tag-kontena"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>An Overview of the Kontena Platform - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Back in my Docker hosting post, I noted that deploying and orchestrating containers live was still a missing step in the Docker workflow for many\" \/>\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.webcodegeeks.com\/devops\/overview-kontena-platform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Overview of the Kontena Platform - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Back in my Docker hosting post, I noted that deploying and orchestrating containers live was still a missing step in the Docker workflow for many\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-20T09:15:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Chris Ward\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Ward\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/\"},\"author\":{\"name\":\"Chris Ward\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/ec768d779e3ecb955c5f552f0f734757\"},\"headline\":\"An Overview of the Kontena Platform\",\"datePublished\":\"2017-10-20T09:15:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/\"},\"wordCount\":1035,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"keywords\":[\"Docker\",\"Kontena\"],\"articleSection\":[\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/\",\"name\":\"An Overview of the Kontena Platform - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2017-10-20T09:15:31+00:00\",\"description\":\"Back in my Docker hosting post, I noted that deploying and orchestrating containers live was still a missing step in the Docker workflow for many\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/devops\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"An Overview of the Kontena Platform\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/ec768d779e3ecb955c5f552f0f734757\",\"name\":\"Chris Ward\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e715e4a95de958fcd3da75cde89b6459b80f977d665284e37751ecdcb2b1e4c4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e715e4a95de958fcd3da75cde89b6459b80f977d665284e37751ecdcb2b1e4c4?s=96&d=mm&r=g\",\"caption\":\"Chris Ward\"},\"description\":\"Chris Ward is a technical writer, speaker, and developer.\",\"url\":\"https:\/\/www.webcodegeeks.com\/author\/chris-ward\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An Overview of the Kontena Platform - Web Code Geeks - 2026","description":"Back in my Docker hosting post, I noted that deploying and orchestrating containers live was still a missing step in the Docker workflow for many","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.webcodegeeks.com\/devops\/overview-kontena-platform\/","og_locale":"en_US","og_type":"article","og_title":"An Overview of the Kontena Platform - Web Code Geeks - 2026","og_description":"Back in my Docker hosting post, I noted that deploying and orchestrating containers live was still a missing step in the Docker workflow for many","og_url":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-10-20T09:15:31+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","type":"image\/jpeg"}],"author":"Chris Ward","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Chris Ward","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/"},"author":{"name":"Chris Ward","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/ec768d779e3ecb955c5f552f0f734757"},"headline":"An Overview of the Kontena Platform","datePublished":"2017-10-20T09:15:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/"},"wordCount":1035,"commentCount":2,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","keywords":["Docker","Kontena"],"articleSection":["DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/","url":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/","name":"An Overview of the Kontena Platform - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2017-10-20T09:15:31+00:00","description":"Back in my Docker hosting post, I noted that deploying and orchestrating containers live was still a missing step in the Docker workflow for many","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/devops\/overview-kontena-platform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/www.webcodegeeks.com\/category\/devops\/"},{"@type":"ListItem","position":3,"name":"An Overview of the Kontena Platform"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/ec768d779e3ecb955c5f552f0f734757","name":"Chris Ward","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e715e4a95de958fcd3da75cde89b6459b80f977d665284e37751ecdcb2b1e4c4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e715e4a95de958fcd3da75cde89b6459b80f977d665284e37751ecdcb2b1e4c4?s=96&d=mm&r=g","caption":"Chris Ward"},"description":"Chris Ward is a technical writer, speaker, and developer.","url":"https:\/\/www.webcodegeeks.com\/author\/chris-ward\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/19009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/148"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=19009"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/19009\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/10356"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=19009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=19009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=19009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}