{"id":16059,"date":"2017-02-14T16:15:54","date_gmt":"2017-02-14T14:15:54","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=16059"},"modified":"2017-12-19T12:14:32","modified_gmt":"2017-12-19T10:14:32","slug":"docker-volumes-example","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/","title":{"rendered":"Docker Volumes Example"},"content":{"rendered":"<p>Each Docker container stores the data its processes need in that container. Unless we make the container store the data outside the container, which is extremely useful for when we don&#8217;t want to have the data layer we work with tied to the running container. That&#8217;s what we are going to see in this example, using Docker volumes.<\/p>\n<p>For this tutorial, 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&nbsp;<br \/>\n&nbsp;<br \/>\n[ulp id=&#8217;OCKUMTbC259tpbxG&#8217;]<\/p>\n<div class=\"tip\"><strong>Tip<\/strong><br \/>\nYou may skip Docker installation 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. Understanding volumes<\/h2>\n<p>The containers, apart from the running services, also store all the data within it. This means that, if we remove the container, all the data that has been added or changed will be gone.<\/p>\n<p>For some cases this might be fine, but for others, we may want to make the data persist outside the container. The clearest example can be a container running a database, for which perhaps we don&#8217;t want to store the data in the container where the database service is running, but in the file system of the host. Another use, for example, can be for sharing data among several containers.<\/p>\n<p>Docker allows this using a concept named as &#8220;Data volumes&#8221;. Actually, is very simple: <strong>a volume is a file or directory that is mounted directly in the container<\/strong>. The concept is the same as the &#8220;mount&#8221; in Linux.<\/p>\n<h2>3. Mounting a directory from the host to the container<\/h2>\n<p>As we used databases as example for the brief explanation for Docker volumes, why not using one for our example?<\/p>\n<p>Before anything, let&#8217;s create the directory that will be binded to the MySQL data directory, for example:<\/p>\n<pre class=\"brush:bash\">mkdir -p $(echo $HOME)\/docker\/mysql-data<\/pre>\n<p>If you are using an existing one, take into account that MySQL needs an empty directory for storing its data.<\/p>\n<p>Now, let&#8217;s pull the MySQL image; it&#8217;s enough to pull the default tagged one:<\/p>\n<pre class=\"brush:bash\">docker pull mysql<\/pre>\n<p>For using data volumes, the difference comes when creating the container. For indicating to Docker that we are going to use a volume, we have to use the <code>-v<\/code> (<code>--volume<\/code>) option, with the following format:<\/p>\n<pre class=\"brush:bash\">docker run -v \/host\/path:\/container\/path<\/pre>\n<p>By default, MySQL stores its data in <code>\/var\/lib\/mysql<\/code>, so that&#8217;s the directory we have to bind:<\/p>\n<pre class=\"brush:bash\">docker run -d \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 --name=mysql1 \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -v $(echo $HOME)\/docker\/mysql-data:\/var\/lib\/mysql \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -e MYSQL_ROOT_PASSWORD=test \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 mysql<\/pre>\n<p>(Note that we also passed a password for MySQL root user in the environmental variable <code>MYSQL_ROOT_PASSWORD<\/code>).<\/p>\n<p>We can check the volumes information, among other things, with the <code>inspect<\/code> command. As the output is quite long, we can format it to just show the volumes information:<\/p>\n<pre class=\"brush:bash\">docker inspect --format '{{ index .Mounts }}' mysql1<\/pre>\n<p>Which, in my case, shows:<\/p>\n<pre class=\"brush:bash\">[{ \/home\/julen\/docker\/mysql-data \/var\/lib\/mysql\u00a0\u00a0 true rprivate}]<\/pre>\n<p>Returning to the container. now, host&#8217;s <code>$HOME\/docker\/mysql-data<\/code> is mounted to container&#8217;s <code>\/var\/lib\/mysql<\/code>. If we now list the directory of the directory, we will see that there are several files and directories, which have been created by MySQL.<\/p>\n<p>Let&#8217;s now make a little test to see that our data persistence is working, and that the data used in the container, is actually not dependent of it. For this, we will create a database with a table, and insert a row:<\/p>\n<pre class=\"brush:bash\">docker exec -it mysql1 \/bin\/bash\r\nmysql -u root -p<\/pre>\n<p>After entering the password we set and being in the MySQL console, we will create the database and the table, and some data:<\/p>\n<pre class=\"brush:sql\">CREATE DATABASE testdb;\r\nUSE testdb;\r\nCREATE TABLE test(foo varchar(100));\r\nINSERT INTO test VALUES('a value');<\/pre>\n<p>Let&#8217;s remove now the container:<\/p>\n<pre class=\"brush:bash\">docker rm -f mysql1<\/pre>\n<p>And, create another one, of course, mounting the data directory:<\/p>\n<pre class=\"brush:bash\">docker run -d \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 --name=mysql2 \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -v $(echo $HOME)\/docker\/mysql-data:\/var\/lib\/mysql \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -e MYSQL_ROOT_PASSWORD=test \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 mysql<\/pre>\n<p>If we connect now to the database of this container, with the same commands as above (just replacing <code>mysql1<\/code> with <code>mysql2<\/code>, for the container name), we will see that the database already exists, and that the introduced data is still there:<\/p>\n<pre class=\"brush:sql\">USE testdb;\r\nSELECT * FROM test;<\/pre>\n<p>The output would be:<\/p>\n<pre class=\"brush:sql\">+---------+\r\n| foo\u00a0\u00a0\u00a0\u00a0 |\r\n+---------+\r\n| a value |\r\n+---------+\r\n1 row in set (0.00 sec)<\/pre>\n<h2>4. Summary<\/h2>\n<p>This example has shown how to use Docker volumes, which are really useful when we want to keep the data separated from the actual container. We have seen how does it work by creating a container with a database, deleting the container, creating another new one, and seeing how the created data persisted.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Each Docker container stores the data its processes need in that container. Unless we make the container store the data outside the container, which is extremely useful for when we don&#8217;t want to have the data layer we work with tied to the running container. That&#8217;s what we are going to see in this example, &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-16059","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 Volumes Example - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Each Docker container stores the data its processes need in that container. Unless we make the container store the data outside the container, which is\" \/>\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-volumes-example\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Volumes Example - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Each Docker container stores the data its processes need in that container. Unless we make the container store the data outside the container, which is\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/\" \/>\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-02-14T14:15:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-19T10:14:32+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-volumes-example\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/\"},\"author\":{\"name\":\"Toni\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/54a7be647b0b871cff41cbf3d2a95966\"},\"headline\":\"Docker Volumes Example\",\"datePublished\":\"2017-02-14T14:15:54+00:00\",\"dateModified\":\"2017-12-19T10:14:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/\"},\"wordCount\":685,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#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-volumes-example\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/\",\"name\":\"Docker Volumes Example - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2017-02-14T14:15:54+00:00\",\"dateModified\":\"2017-12-19T10:14:32+00:00\",\"description\":\"Each Docker container stores the data its processes need in that container. Unless we make the container store the data outside the container, which is\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#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-volumes-example\/#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 Volumes Example\"}]},{\"@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 Volumes Example - Web Code Geeks - 2026","description":"Each Docker container stores the data its processes need in that container. Unless we make the container store the data outside the container, which is","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-volumes-example\/","og_locale":"en_US","og_type":"article","og_title":"Docker Volumes Example - Web Code Geeks - 2026","og_description":"Each Docker container stores the data its processes need in that container. Unless we make the container store the data outside the container, which is","og_url":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-02-14T14:15:54+00:00","article_modified_time":"2017-12-19T10:14:32+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-volumes-example\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/"},"author":{"name":"Toni","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/54a7be647b0b871cff41cbf3d2a95966"},"headline":"Docker Volumes Example","datePublished":"2017-02-14T14:15:54+00:00","dateModified":"2017-12-19T10:14:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/"},"wordCount":685,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#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-volumes-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/","url":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/","name":"Docker Volumes Example - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2017-02-14T14:15:54+00:00","dateModified":"2017-12-19T10:14:32+00:00","description":"Each Docker container stores the data its processes need in that container. Unless we make the container store the data outside the container, which is","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-volumes-example\/#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-volumes-example\/#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 Volumes Example"}]},{"@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\/16059","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=16059"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/16059\/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=16059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=16059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=16059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}