{"id":16303,"date":"2017-03-06T16:15:10","date_gmt":"2017-03-06T14:15:10","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=16303"},"modified":"2017-12-19T12:11:54","modified_gmt":"2017-12-19T10:11:54","slug":"docker-zeppelin-tutorial","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/","title":{"rendered":"Docker Zeppelin Tutorial"},"content":{"rendered":"<p>Big Data is one of the most trending topics in the last times. One of the existing tools for this task is Zeppelin, a Java application developed by Apache, which is an implementation of the concept known as &#8220;web notebook&#8221;, focused on the interactive data analytics with languages and technologies like Spark, R, etc.<\/p>\n<p>In this tutorial we will see how to set up a Docker container to run it. For this, Linux Mint 18 and Docker version 1.12.3 have been used.<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n[ulp id=&#8217;OCKUMTbC259tpbxG&#8217;]<\/p>\n<div class=\"tip\"><strong>Tip<\/strong><br \/>\nYou may skip Docker\u00a0installation and jump directly to the <a href=\"#section_2\"><strong>beginning of the example<\/strong><\/a> below.<\/div>\n<h2>1. Installation<\/h2>\n<p><strong>Note<\/strong>: Docker requires a 64-bit system with a kernel version equal or higher to 3.10.<\/p>\n<p>We can install Docker simply via <code>apt-get<\/code>, without the need of adding any repository, just installing the <code>docker.io<\/code> package:<\/p>\n<pre class=\"brush:bash\">sudo apt-get update\r\nsudo apt-get install docker.io<\/pre>\n<p>For more details, you can follow the <a href=\"https:\/\/www.webcodegeeks.com\/devops\/install-docker-ubuntu-tutorial\/\">Install Docker on Ubuntu Tutorial<\/a>.<\/p>\n<h2 id=\"section_2\">2.\u00a0Creating a Zeppelin image<\/h2>\n<p>Unfortunately, Apache doesn&#8217;t provide an official image for Zeppelin. So, we will have to build our own image from a Dockerfile.\u00a0The easiest way is to download from the <a href=\"http:\/\/www.apache.org\/dyn\/closer.cgi\/zeppelin\/zeppelin-0.7.0\/zeppelin-0.7.0-bin-all.tgz\">Apache mirror<\/a>.<\/p>\n<p>Apache Zeppelin is a Java application, so, we will need Java installed in our container. Apart from that, we will need cURL for downloading Zeppelin from the mirror. For the simplest Zeppelin image we don&#8217;t need any other package.<\/p>\n<p>We will be using the following directory structure:<\/p>\n<pre class=\"brush:bash\">.\r\n\u251c\u2500\u2500 Dockerfile\r\n\u2514\u2500\u2500 scripts\r\n \u2514\u2500\u2500 docker-entrypoint.sh<\/pre>\n<p>A Dockerfile for installing Zeppelin would just consist of:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>Dockerfile<\/em><\/span><\/p>\n<pre class=\"brush:bash\">FROM ubuntu\r\n\r\nMAINTAINER Julen Pardo &lt;julen.pardo@outlook.es&gt;\r\n\r\nENV ZEPPELIN_VERSION 0.7.0\r\nENV ZEPPELIN_URL http:\/\/apache.mirror.iphh.net\/zeppelin\/zeppelin-$ZEPPELIN_VERSION\/zeppelin-$ZEPPELIN_VERSION-bin-all.tgz\r\nENV ZEPPELIN_DIR \/opt\/zeppelin\r\n\r\nENV DEBIAN_FRONTEND=noninteractive\r\n\r\nRUN apt-get update\r\n\r\nRUN apt-get install -y default-jdk \\\r\n curl\r\n\r\nRUN mkdir -p $ZEPPELIN_DIR\r\n\r\n# Download compressed Zeppelin to tmp dir, and extract contents to Zeppelin dir\r\nWORKDIR \/tmp\r\n\u00a0\r\n\r\nRUN curl $ZEPPELIN_URL | tar xfz -\r\nRUN cp -r zeppelin-$ZEPPELIN_VERSION-bin-all\/* $ZEPPELIN_DIR\r\nWORKDIR $ZEPPELIN_DIR\r\n\r\n# Create a Zeppelin user\r\nRUN useradd --home $ZEPPELIN_DIR --shell \/bin\/bash zeppelin\r\nRUN chown zeppelin:zeppelin -R $ZEPPELIN_DIR\r\n\r\nCOPY scripts\/docker-entrypoint.sh \/docker-entrypoint.sh\r\nRUN chmod 777 \/docker-entrypoint.sh\r\nENTRYPOINT [\"\/docker-entrypoint.sh\"]\r\n\r\nEXPOSE 8080<\/pre>\n<p>A quick overview of what we do with the previous Dockerfile:<\/p>\n<ul>\n<li>Define Zeppelin version to download, the mirror and the directory where it will be placed.<\/li>\n<li>Install the JDK (and cURL).<\/li>\n<li>Download Zeppelin from the given mirror, uncompress the file and move it to the directory previously defined.<\/li>\n<li>Create a Zeppelin user, owning its directory, for running the service.<\/li>\n<\/ul>\n<p>The entry point script is just for starting the Zeppelin service:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>docker-entrypoint.sh<\/em><\/span><\/p>\n<pre class=\"brush:bash\">#!\/bin\/bash\r\n\r\n# Start Zeppelin as \"zeppelin\" user.\r\nsu - zeppelin -c \"$ZEPPELIN_DIR\/bin\/zeppelin-daemon.sh start\"\r\n\r\n# Non-ending command to keep the container alive.\r\ntail -F n0 \/dev\/null\r\nNow we can simply build an image executing:<\/pre>\n<pre class=\"brush:bash\">docker build --tag=zeppelin . # Path to the Dockerfile.<\/pre>\n<p>Finally, we can create the container, binding container&#8217;s port 8080 to some free port in the host:<\/p>\n<pre class=\"brush:bash\">docker run -d -p 8080:8080 --name=zeppelin1 zeppelin<\/pre>\n<p>After some seconds, if we follow <code>localhost:8080<\/code> in a browser (depending on the port you chose), we should access the Zeppelin main page:<\/p>\n<figure style=\"width: 948px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/02\/zeppelin1.jpg\" width=\"948\" height=\"716\" \/><figcaption class=\"wp-caption-text\">1. Accessing Zeppelin, running in the Docker container.<\/figcaption><\/figure>\n<h3>2.1. Securing our Zeppelin instance<\/h3>\n<p>As we could notice, we were logged in as &#8220;anonymous&#8221;\u00a0user. Obviously, this is not recommended in any scenario.<\/p>\n<p>For authentication, Zeppelin uses a Java framework named Apache Shiro. By default, is not enabled for Zeppelin. For enabling in, we just to create a \u00a0<code>conf\/shiro.ini<\/code>\u00a0file. Actually, Zeppelin already provides a example file that we can use as template.<\/p>\n<p>The simplest\u00a0<code>config\/shiro.ini<\/code> could consist of:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>shiro.ini<\/em><\/span><\/p>\n<pre class=\"brush:bash\">[users]\r\nadmin = adminpassword\r\nuser1 = password\r\n\r\n[main]\r\nsessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager\r\n\r\nsecurityManager.sessionManager = $sessionManager\r\nsecurityManager.sessionManager.globalSessionTimeout = 86400000\r\n\r\nshiro.loginUrl = \/api\/login<\/pre>\n<p>In this case, we have defined two different logins.<\/p>\n<p>For more details, check the <a href=\"https:\/\/zeppelin.apache.org\/docs\/0.6.2\/security\/shiroauthentication.html\">Shiro authentication for Apache Zeppelin<\/a> section in the documentation.<\/p>\n<p>Now, the remaining step is to add copy the file into the container. Now, our directory structure could look like this:<\/p>\n<pre class=\"brush:bash\">.\r\n\u251c\u2500\u2500 conf\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 shiro.ini\r\n\u251c\u2500\u2500 Dockerfile\r\n\u2514\u2500\u2500 scripts\r\n \u2514\u2500\u2500 docker-entrypoint.sh<\/pre>\n<p>And, we have to copy the file, the same way we copy the entrypoint script:<\/p>\n<pre class=\"brush:bash\"># ...\r\nCOPY conf\/shiro.ini $ZEPPELIN_DIR\/conf\/shiro.ini\r\n# ...\r\n# Create a Zeppelin user\r\nRUN useradd --home $ZEPPELIN_DIR --shell \/bin\/bash zeppelin\r\nRUN chown zeppelin:zeppelin -R $ZEPPELIN_DIR\r\n# ...<\/pre>\n<p>Note that we add the file before setting the permissions for the Zeppelin user, for making sure that it will have read access.<\/p>\n<p>We don&#8217;t have to do nothing more. When the service is started in the entrypoint, Zeppelin will the detect the Shiro config file.<\/p>\n<p>If we re-build the image and create another container, we will see that, in the top-right corner of the site, we will see a &#8220;Login&#8221; button, instead of being logged in as &#8220;anonymous&#8221;. For logging in, we just have to introduce the credentials defined in the shiro.ini file.<\/p>\n<h2>3. Summary<\/h2>\n<p>In this tutorial we have seen how to set up a Docker container running Apache Zeppelin, from the scratch, since there&#8217;s no official image in the Docker Hub. As we could see, is a very easy process, and having it in a Docker image will allow us to easily deploy our Zeppelin instances in any host.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Big Data is one of the most trending topics in the last times. One of the existing tools for this task is Zeppelin, a Java application developed by Apache, which is an implementation of the concept known as &#8220;web notebook&#8221;, focused on the interactive data analytics with languages and technologies like Spark, R, etc. In &hellip;<\/p>\n","protected":false},"author":160,"featured_media":10356,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[217],"class_list":["post-16303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Docker Zeppelin Tutorial - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Big Data is one of the most trending topics in the last times. One of the existing tools for this task is Zeppelin, a Java application developed by\" \/>\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\/docker-zeppelin-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Zeppelin Tutorial - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Big Data is one of the most trending topics in the last times. One of the existing tools for this task is Zeppelin, a Java application developed by\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/\" \/>\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-03-06T14:15:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-19T10:11:54+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=\"Toni\" \/>\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=\"Toni\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/\"},\"author\":{\"name\":\"Toni\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/54a7be647b0b871cff41cbf3d2a95966\"},\"headline\":\"Docker Zeppelin Tutorial\",\"datePublished\":\"2017-03-06T14:15:10+00:00\",\"dateModified\":\"2017-12-19T10:11:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/\"},\"wordCount\":651,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"keywords\":[\"Docker\"],\"articleSection\":[\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/\",\"name\":\"Docker Zeppelin Tutorial - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2017-03-06T14:15:10+00:00\",\"dateModified\":\"2017-12-19T10:11:54+00:00\",\"description\":\"Big Data is one of the most trending topics in the last times. One of the existing tools for this task is Zeppelin, a Java application developed by\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#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\/docker-zeppelin-tutorial\/#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\":\"Docker Zeppelin Tutorial\"}]},{\"@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\/54a7be647b0b871cff41cbf3d2a95966\",\"name\":\"Toni\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/21c1661474c78b4757355b8beef9ab1d14f490ee3a3e67392f4e618d36643d4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/21c1661474c78b4757355b8beef9ab1d14f490ee3a3e67392f4e618d36643d4c?s=96&d=mm&r=g\",\"caption\":\"Toni\"},\"url\":\"https:\/\/www.webcodegeeks.com\/author\/julen-pardo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker Zeppelin Tutorial - Web Code Geeks - 2026","description":"Big Data is one of the most trending topics in the last times. One of the existing tools for this task is Zeppelin, a Java application developed by","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\/docker-zeppelin-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"Docker Zeppelin Tutorial - Web Code Geeks - 2026","og_description":"Big Data is one of the most trending topics in the last times. One of the existing tools for this task is Zeppelin, a Java application developed by","og_url":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-03-06T14:15:10+00:00","article_modified_time":"2017-12-19T10:11:54+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":"Toni","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Toni","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/"},"author":{"name":"Toni","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/54a7be647b0b871cff41cbf3d2a95966"},"headline":"Docker Zeppelin Tutorial","datePublished":"2017-03-06T14:15:10+00:00","dateModified":"2017-12-19T10:11:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/"},"wordCount":651,"commentCount":2,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","keywords":["Docker"],"articleSection":["DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/","url":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/","name":"Docker Zeppelin Tutorial - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2017-03-06T14:15:10+00:00","dateModified":"2017-12-19T10:11:54+00:00","description":"Big Data is one of the most trending topics in the last times. One of the existing tools for this task is Zeppelin, a Java application developed by","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-zeppelin-tutorial\/#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\/docker-zeppelin-tutorial\/#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":"Docker Zeppelin Tutorial"}]},{"@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\/54a7be647b0b871cff41cbf3d2a95966","name":"Toni","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/21c1661474c78b4757355b8beef9ab1d14f490ee3a3e67392f4e618d36643d4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21c1661474c78b4757355b8beef9ab1d14f490ee3a3e67392f4e618d36643d4c?s=96&d=mm&r=g","caption":"Toni"},"url":"https:\/\/www.webcodegeeks.com\/author\/julen-pardo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/16303","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\/160"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=16303"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/16303\/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=16303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=16303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=16303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}