{"id":32873,"date":"2019-10-31T21:49:25","date_gmt":"2019-10-31T18:49:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/izuchaem-docker-chast-6-rabota-s-dannymi\/"},"modified":"2019-10-31T21:49:25","modified_gmt":"2019-10-31T18:49:25","slug":"izuchaem-docker-chast-6-rabota-s-dannymi","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","title":{"rendered":"Learning Docker, Part 6: Working with Data","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>In this part of our Docker series translation, we will discuss data management, specifically Docker volumes. Throughout these materials, we've continually compared Docker's software mechanisms to various culinary analogies. Let\u2019s not deviate from this tradition here. Data in Docker can be considered as spices. The world has many types of spices, and Docker has numerous ways to work with data.<\/p>\n<p>\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/438796\/\">Part 1: Fundamentals<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/439978\/\">Part 2: Terms and Concepts<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/439980\/\">Part 3: Dockerfile Files<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/440658\/\">Part 4: Reducing Image Sizes and Accelerating Their Build<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/440660\/\">Part 5: Commands<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/441574\/\">Part 6: Working with Data<\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/441574\/\"><img decoding=\"async\" alt=\"Learning Docker, Part 6: Working with Data\" src=\"\/wp-content\/uploads\/2019\/05\/b46a9525df1a3ed70d8e2625fbfd42f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPlease note that this material is prepared using Docker Engine version 18.09.1 and API version <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/engine\/api\/version-history\/\">1.39<\/a><\/noindex>.<\/p>\n<p>Data in Docker can be stored temporarily or permanently. Let\u2019s start with temporary data.<\/p>\n<h2>Temporary data storage<\/h2>\n<p>\nIn Docker containers, there are two ways to manage temporary data.<\/p>\n<p>By default, files created by applications running in a container are saved in a writable layer of the container. For this mechanism, no special configuration is needed. It\u2019s simple and effective. The application just needs to save the data and continue working. However, once the container ceases to exist, the data saved this way will also disappear.<\/p>\n<p>Another solution for storing temporary files in Docker is available for cases that require a higher performance level compared to the standard temporary data storage mechanism. If you don\u2019t need your data to persist beyond the life of the container, you can connect tmpfs\u2014a temporary storage system that uses the host's RAM. This will speed up data read and write operations.<\/p>\n<p>Often, data needs to be stored even after the container has ceased to exist. For this, we will need mechanisms for persistent data storage.<\/p>\n<h2>Persistent Data Storage<\/h2>\n<p>\nThere are two ways to extend the data lifespan beyond the container lifespan. One method involves using bind mount technology. With this approach, you can mount a real folder to the container. Processes outside of Docker will be able to work with the data stored in that folder. Here\u2019s how <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/\">it looks<\/a><\/noindex> tmpfs mounting and bind mount technology.<\/p>\n<p><img decoding=\"async\" alt=\"Learning Docker, Part 6: Working with Data\" src=\"\/wp-content\/uploads\/2019\/05\/73b9b7fd59b1321edb9f58953285d8d5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>tmpfs mounting and bind mount<\/i><\/p>\n<p>The downsides of using bind mount technology are that it complicates data backup, data migration, and sharing data among multiple containers. It is much better to use Docker volumes for persistent data storage.<\/p>\n<h2>Docker volumes<\/h2>\n<p>\nA volume is a file system that resides on the host machine outside of containers. Docker is responsible for creating and managing volumes. Here are the main characteristics of Docker volumes:<\/p>\n<ul>\n<li>They are means for permanent information storage.<\/li>\n<li>They are autonomous and separate from containers.<\/li>\n<li>They can be shared among different containers.<\/li>\n<li>They allow for efficient reading and writing of data.<\/li>\n<li>Volumes can be hosted on resources of a remote cloud provider.<\/li>\n<li>They can be encrypted.<\/li>\n<li>They can be named.<\/li>\n<li>A container can pre-fill a volume with data.<\/li>\n<li>They are convenient for testing.<\/li>\n<\/ul>\n<p>\nAs you can see, Docker volumes have remarkable properties. Let\u2019s talk about how to create them.<\/p>\n<h2>Creating volumes<\/h2>\n<p>\nVolumes can be created using Docker or through API requests.<\/p>\n<p>Here\u2019s an instruction in Dockerfile that allows you to create a volume when starting a container.<\/p>\n<pre><code class=\"plaintext\">VOLUME \/my_volume<\/code><\/pre>\n<p>\nWith such an instruction in Docker, after creating the container, a volume will be created containing the data that already exists in the specified location. Note that if you create a volume using Dockerfile, it does not exempt you from specifying the volume's mount point.<\/p>\n<p>Volumes can also be created in Dockerfile using the JSON format.<\/p>\n<p>Additionally, volumes can be created using command line tools while the container is running.<\/p>\n<h2>Managing volumes from the command line<\/h2>\n<p><\/p>\n<h3>\u258dCreating a volume<\/h3>\n<p>\nYou can create an independent volume with the following command:<\/p>\n<pre><code class=\"plaintext\">docker volume create --name my_volume<\/code><\/pre>\n<p><\/p>\n<h3>\u258dChecking information about volumes<\/h3>\n<p>\nTo view the list of Docker volumes, use the following command:<\/p>\n<pre><code class=\"plaintext\">docker volume ls<\/code><\/pre>\n<p>\nYou can inspect a specific volume like this:<\/p>\n<pre><code class=\"plaintext\">docker volume inspect my_volume<\/code><\/pre>\n<p><\/p>\n<h3>\u258dRemoving a Volume<\/h3>\n<p>\nYou can remove a volume like this:<\/p>\n<pre><code class=\"plaintext\">docker volume rm my_volume<\/code><\/pre>\n<p>\nTo remove all volumes that are not used by containers, you can use the following command:<\/p>\n<pre><code class=\"plaintext\">docker volume prune<\/code><\/pre>\n<p>\nBefore removing volumes, Docker will prompt you for confirmation to perform this operation.<\/p>\n<p>If a volume is associated with a container, that volume cannot be removed until the corresponding container is deleted. However, even if the container is deleted, Docker does not always recognize it. If this happens, you can use the following command:<\/p>\n<pre><code class=\"plaintext\">docker system prune<\/code><\/pre>\n<p>\nIt is intended to clean up Docker resources. After executing this command, you should be able to remove volumes that were previously incorrectly identified.<\/p>\n<h2>Flags --mount and --volume<\/h2>\n<p>\nWhen working with volumes, you will often need to use flags when invoking the command. <code>docker<\/code>For example, to create a volume while creating a container, you can use the following construction:<\/p>\n<pre><code class=\"plaintext\">docker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image<\/code><\/pre>\n<p>\nIn the old days (before 2017), the flag <code>--volume<\/code>was popular. Originally, this flag (it can also be used in a shortened form, looking like <code>-v<\/code>) was used for standalone containers, while the flag <code>--mount<\/code> was for Docker Swarm environments. However, starting from Docker 17.06, the flag <code>--mount<\/code> can be used in any scenarios.<\/p>\n<p>It should be noted that using the flag <code>--mount<\/code> increases the amount of additional data you need to specify in the command, but for several reasons, it is better to use this flag instead of <code>--volume<\/code>. The flag <code>--mount<\/code> -- this is the only mechanism that allows working with services or specifying volume driver parameters. Furthermore, it is simpler to work with this flag.<\/p>\n<p>In existing command examples that focus on working with data in Docker, you can find many instances of using the flag <code>-v<\/code>. When trying to adapt these commands for yourself, consider that the flags <code>--mount<\/code> and <code>--volume<\/code> use different parameter formats. That is, you cannot simply replace <code>-v<\/code> to <code>--mount<\/code> and get a working command.<\/p>\n<p>The main difference between <code>--mount<\/code> and <code>--volume<\/code> is that when using the flag <code>--volume<\/code> all parameters are collected together in one field, whereas when using <code>--mount<\/code> parameters are separated.<\/p>\n<p>When working with <code>--mount<\/code> parameters are presented as key-value pairs, specifically, it looks like <code>key=value<\/code>. These pairs are separated by commas. Here are commonly used parameters <code>--mount<\/code>:<\/p>\n<ul>\n<li><code>type<\/code> \u2014 mount type. The value for the corresponding key can be <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/bind-mounts\/\">bind<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/\">volume<\/a><\/noindex> or <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/tmpfs\/\">tmpfs<\/a><\/noindex>. Here we are talking about volumes, meaning we are interested in the value <code>volume<\/code>.<\/li>\n<li><code>source<\/code> \u2014 mount source. For named volumes, this is the volume name. For unnamed volumes, this key is not specified. It can be shortened to <code>src<\/code>.<\/li>\n<li><code>destination<\/code> \u2014 the path where the file or folder is mounted in the container. This key can be shortened to <code>dst<\/code> or <code>target<\/code>.<\/li>\n<li><code>readonly<\/code> \u2014 mounts a volume that is intended <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/#use-a-read-only-volume\">read-only<\/a><\/noindex>. This key is optional, and it does not have a value assigned.<\/li>\n<\/ul>\n<p>\nHere is an example of usage <code>--mount<\/code> with multiple parameters:<\/p>\n<pre><code class=\"plaintext\">docker run --mount type=volume,source=volume_name,destination=\\\/path\\\/in\\\/container,readonly my_image<\/code><\/pre>\n<p><\/p>\n<h2>Summary<\/h2>\n<p>\nHere are useful commands that can be used when working with Docker volumes:<\/p>\n<ul>\n<li><code>docker volume create<\/code><\/li>\n<li><code>docker volume ls<\/code><\/li>\n<li><code>docker volume inspect<\/code><\/li>\n<li><code>docker volume rm<\/code><\/li>\n<li><code>docker volume prune<\/code><\/li>\n<\/ul>\n<p>\nHere is a list of commonly used parameters for <code>--mount<\/code>, applicable in a command of the form <code>docker run --mount my_options my_image<\/code>:<\/p>\n<ul>\n<li><code>type=volume<\/code><\/li>\n<li><code>source=volume_name<\/code><\/li>\n<li><code>destination=\\\/path\\\/in\\\/container<\/code><\/li>\n<li><code>readonly<\/code><\/li>\n<\/ul>\n<p>\nNow that we've completed this series of materials on Docker, it's time to say a few words about where those studying Docker can go next. <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.freecodecamp.org\/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b\">Here<\/a><\/noindex> a great article about Docker. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Docker-Deep-Dive-Nigel-Poulton-ebook\/dp\/B01LXWQUFF\">Here<\/a><\/noindex> a book on Docker (when buying this book, try to get the most recent edition). <noindex><a rel=\"nofollow\" href=\"https:\/\/dockerbook.com\/\">Here<\/a><\/noindex> another book that would suit those who believe that practice is the best way to learn technologies.<\/p>\n<p><b>Dear readers!<\/b> What materials on Docker would you recommend for beginners?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ruvds.com\/ru-rub\/#order\"><img decoding=\"async\" alt=\"Learning Docker, Part 6: Working with Data\" src=\"\/wp-content\/uploads\/2019\/05\/78a5dd35cfae6d1e291f175957207436.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/441574\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker. \u0412 \u044d\u0442\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u0445 \u043c\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b Docker \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u044a\u0435\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044f\u043c\u0438. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0438 \u0437\u0434\u0435\u0441\u044c. \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 Docker \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0442 \u0441\u043f\u0435\u0446\u0438\u044f\u043c\u0438. \u0412 \u043c\u0438\u0440\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u043e\u0432 \u0441\u043f\u0435\u0446\u0438\u0439, \u0430 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24642,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32873","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0437\u0443\u0447\u0430\u0435\u043c Docker, \u0447\u0430\u0441\u0442\u044c 6: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:49:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:49:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Learning Docker, Part 6: Working with Data | ProHoster","description":"In today's part of the translation of the Docker materials series, we will talk about working with data. In particular, about Docker volumes.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0437\u0443\u0447\u0430\u0435\u043c Docker, \u0447\u0430\u0441\u0442\u044c 6: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 | ProHoster","og:description":"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:49:25+00:00","article:modified_time":"2019-10-31T18:49:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32873","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 12:57:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:56:03","updated":"2026-08-11 12:50:34","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/32873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=32873"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/32873\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/24642"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=32873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=32873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=32873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}