{"id":126856,"date":"2025-04-09T19:12:53","date_gmt":"2025-04-09T19:12:53","guid":{"rendered":"\/tutorials\/?p=126856"},"modified":"2025-12-23T13:34:13","modified_gmt":"2025-12-23T13:34:13","slug":"how-to-fix-docker-permission-denied-error","status":"publish","type":"post","link":"\/tutorials\/how-to-fix-docker-permission-denied-error","title":{"rendered":"How to fix the Docker permission denied error on Ubuntu"},"content":{"rendered":"<p>The Docker permission denied error usually occurs when <strong>your user account doesn&rsquo;t have permission to access the Docker daemon socket or required files and directories<\/strong>.<\/p><p>Docker uses these restrictions to prevent unauthorized access. But they can disrupt your workflow when you set up development environments on Ubuntu.<\/p><p>To fix the Docker permission denied error, follow these six proven solutions:<\/p><ol class=\"wp-block-list\">\n<li><strong>Modify user group membership<\/strong>. Add your user account to the <strong>docker<\/strong> group so you can run Docker commands without <strong>sudo<\/strong>.<\/li>\n\n\n\n<li><strong>Adjust file and directory ownership<\/strong>. Update the ownership of configuration files and mounted volumes to ensure the Docker engine can read and write data.<\/li>\n\n\n\n<li><strong>Inspect socket permissions<\/strong>. Check the permission levels of the Docker Unix socket to confirm that the communication channel isn&rsquo;t restricted.<\/li>\n\n\n\n<li><strong>Update script execution rights<\/strong>. Make sure Dockerfile commands and <strong>ENTRYPOINT<\/strong> scripts have execute permissions to avoid container startup failures.<\/li>\n\n\n\n<li><strong>Configure hardware access<\/strong>. Allow containers to access specific devices, such as USB devices or GPUs, to resolve hardware-related permission issues.<\/li>\n\n\n\n<li><strong>Refresh the Docker daemon<\/strong>. Restart the Docker service and your user session to apply all permission and group changes.<\/li>\n<\/ol><p>\n\n\n\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-prerequisites\"><strong>Prerequisites<\/strong><\/h2><p>Before fixing the Docker&rsquo; permission denied &lsquo;error, ensure your Linux system meets the requirements for changing administrative settings.<\/p><ul class=\"wp-block-list\">\n<li><strong>Administrative access<\/strong>. You need <strong>sudo<\/strong> or root privileges to modify user groups and file permissions.<\/li>\n\n\n\n<li><strong>User group verification<\/strong>. Check your current group memberships by running the <strong>groups $USER<\/strong> command.<\/li>\n<\/ul><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69e7327ed3347\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1168\" height=\"294\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-groups-user.png\/public\" alt=\"Terminal output showing current Linux user group memberships\" class=\"wp-image-137654\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-groups-user.png\/w=1168,fit=scale-down 1168w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-groups-user.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-groups-user.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-groups-user.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-groups-user.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1168px) 100vw, 1168px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ul class=\"wp-block-list\">\n<li><strong>Docker installation<\/strong>. Confirm that <a href=\"\/tutorials\/how-to-install-docker-on-ubuntu\">Docker is installed<\/a> and running by executing <strong>docker &ndash;version<\/strong>.<\/li>\n<\/ul><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69e7327ed3d9e\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"2560\" height=\"292\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-version-1-scaled.png\/public\" alt=\"Terminal output confirming the installed Docker version\" class=\"wp-image-137655\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-version-1-scaled.png\/w=2560,fit=scale-down 2560w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-version-1-scaled.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-version-1-scaled.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-version-1-scaled.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-version-1-scaled.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-version-1-scaled.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-version-1-scaled.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>While these instructions focus on Ubuntu, they also apply to most Debian-based distributions.<\/p><h2 class=\"wp-block-heading\" id=\"h-1-add-your-user-to-the-docker-group\"><strong>1. Add your user to the Docker group<\/strong><\/h2><p>The most common cause of the permission denied error is that your user account isn&rsquo;t part of the <strong>docker<\/strong> group.<\/p><p>By default, the Docker daemon runs as a root-owned service. Only users in the <strong>docker<\/strong> group can communicate with it without using <strong>sudo<\/strong>.<\/p><p>To fix this issue, add your current user to the <strong>docker<\/strong> group:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo usermod -aG docker $USER<\/pre><p>This command updates your user account by appending it (<strong>-a<\/strong>) to the specified group (<strong>-G<\/strong>). As a result, your user gains permission to access the Docker daemon socket and run <a href=\"\/tutorials\/docker-cheat-sheet\">Docker commands<\/a> directly.<\/p><p>To apply the new group membership, log out and then log back in.<\/p><p>After logging back in, confirm the change took effect:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">id -nG<\/pre><p>The output should include <strong>docker<\/strong> in the list of groups.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69e7327ed46e9\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1182\" height=\"304\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-id-ng-docker-highlighted.png\/public\" alt=\"Terminal output showing docker group membership highlighted\" class=\"wp-image-137656\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-id-ng-docker-highlighted.png\/w=1182,fit=scale-down 1182w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-id-ng-docker-highlighted.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-id-ng-docker-highlighted.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-id-ng-docker-highlighted.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-id-ng-docker-highlighted.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1182px) 100vw, 1182px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If you want to test immediately without logging out, run:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">newgrp docker<\/pre><p>This command applies the group change to your current terminal session only.<\/p><h2 class=\"wp-block-heading\" id=\"h-2-fix-file-and-directory-permission-issues\"><strong>2. Fix file and directory permission issues<\/strong><\/h2><p>If adding your user to the group doesn&rsquo;t resolve the issue, incorrect permissions on configuration files or mounted volumes may cause the error.<\/p><p>Docker needs read and write access to its configuration files, especially <strong>config.json<\/strong>.<\/p><p>First, check the permissions of your local Docker configuration directory:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ls -l ~\/.docker\/<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69e7327ed574d\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"2560\" height=\"318\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-docker-root-root-highlighted-scaled.png\/public\" alt=\"Terminal output showing root ownership of Docker config files\" class=\"wp-image-137657\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-docker-root-root-highlighted-scaled.png\/w=2560,fit=scale-down 2560w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-docker-root-root-highlighted-scaled.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-docker-root-root-highlighted-scaled.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-docker-root-root-highlighted-scaled.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-docker-root-root-highlighted-scaled.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-docker-root-root-highlighted-scaled.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-docker-root-root-highlighted-scaled.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If the output shows that the files are owned by <strong>root<\/strong> instead of your user, change the ownership with the <a href=\"\/tutorials\/linux-chown-command\">chown command<\/a>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo chown -R \"$USER\":\"$USER\" \"$HOME\/.docker\"<\/pre><p>This command recursively changes the ownership of the <strong>.docker<\/strong> directory to your current user.<\/p><p>Next, fix permission issues related to mounted volumes. When you mount a host directory into a container, the container user needs permission to read from or write to that directory.<\/p><p>For example, if you run a container with a volume mount:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -v ~\/data:\/app\/data ubuntu<\/pre><p>Make sure the host directory <strong>~\/data<\/strong> has the correct permissions. You can grant read and write access to the user (<strong>u<\/strong>) with the following <a href=\"\/tutorials\/how-to-change-linux-permissions-and-owners\">chmod command<\/a>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">chmod u+rw ~\/data<\/pre><p>This guarantees that the user who owns the directory has enough permissions to manage data inside the mounted volume.<\/p><h2 class=\"wp-block-heading\" id=\"h-3-check-docker-socket-permissions\"><strong>3. Check Docker socket permissions<\/strong><\/h2><p>The Docker daemon communicates through a Unix socket located at<strong> \/var\/run\/docker.sock<\/strong>. If this socket has incorrect permissions, the Docker client can&rsquo;t send commands to the daemon.<\/p><p>Check the current socket permissions:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ls -l \/var\/run\/docker.sock<\/pre><p>You should see output similar to the following:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">srw-rw---- 1 root docker 0 Dec 18 10:00 \/var\/run\/docker.sock<\/pre><p>This output shows that <strong>root<\/strong> owns the socket and the <strong>docker<\/strong> group has read and write access. If you see this output and your user belongs to the <strong>docker<\/strong> group, the socket configuration is correct.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69e7327ed6049\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"2560\" height=\"177\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-var-run-docker-sock-root-docker-highlighted-scaled.png\/public\" alt=\"Terminal output showing docker.sock owned by root and docker group\" class=\"wp-image-137658\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-var-run-docker-sock-root-docker-highlighted-scaled.png\/w=2560,fit=scale-down 2560w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-var-run-docker-sock-root-docker-highlighted-scaled.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-var-run-docker-sock-root-docker-highlighted-scaled.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-var-run-docker-sock-root-docker-highlighted-scaled.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-var-run-docker-sock-root-docker-highlighted-scaled.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-var-run-docker-sock-root-docker-highlighted-scaled.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-ls-l-var-run-docker-sock-root-docker-highlighted-scaled.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If the group isn&rsquo;t <strong>docker<\/strong> or the permissions differ, don&rsquo;t change them manually by running <strong>chmod 666 \/var\/run\/docker.sock<\/strong>, especially in production environments.<\/p><p>This command creates a serious security risk by giving all system users access to the Docker daemon, which effectively grants root-level control over the host.<\/p><p>Instead, rely on group membership by adding your user to the <strong>docker<\/strong> group. The Docker daemon automatically sets the correct socket permissions on startup.<\/p><h2 class=\"wp-block-heading\" id=\"h-4-fix-dockerfile-or-entrypoint-script-permissions\"><strong>4. Fix Dockerfile or ENTRYPOINT script permissions<\/strong><\/h2><p>A Docker permission denied error can also occur inside a container when the entrypoint script lacks execute permissions.<\/p><p>This issue often appears when you move scripts from a non-Linux file system, such as Windows, into the Docker build context. In these cases, the executable bit can be lost.<\/p><p>When this happens, the container fails to start because it can&rsquo;t run the script defined in the <strong>ENTRYPOINT<\/strong> or <strong>CMD<\/strong> instruction.<\/p><p>To fix the issue, add a <strong>RUN<\/strong> instruction after the <strong>COPY<\/strong> line in your Dockerfile. This grants execute permissions to the script.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RUN chmod +x \/usr\/local\/bin\/entrypoint.sh<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69e7327ed68c1\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"2560\" height=\"1576\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-nano-dockerfile-run-chmod-entrypoint-sh-highlighted-scaled.png\/public\" alt=\"Dockerfile open in nano with chmod entrypoint script highlighted\" class=\"wp-image-137659\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-nano-dockerfile-run-chmod-entrypoint-sh-highlighted-scaled.png\/w=2560,fit=scale-down 2560w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-nano-dockerfile-run-chmod-entrypoint-sh-highlighted-scaled.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-nano-dockerfile-run-chmod-entrypoint-sh-highlighted-scaled.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-nano-dockerfile-run-chmod-entrypoint-sh-highlighted-scaled.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-nano-dockerfile-run-chmod-entrypoint-sh-highlighted-scaled.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-nano-dockerfile-run-chmod-entrypoint-sh-highlighted-scaled.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-nano-dockerfile-run-chmod-entrypoint-sh-highlighted-scaled.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>This guarantees the script remains executable regardless of its permissions on the host machine. You&rsquo;ll often need this step when building custom images that rely on startup scripts.<\/p><h2 class=\"wp-block-heading\" id=\"h-5-grant-device-access-to-docker-containers\"><strong>5. Grant device access to Docker containers<\/strong><\/h2><p>If a container needs to interact with hardware devices, such as a USB drive, webcam, or GPU, you may see a permission denied error for a device path like <strong>\/dev\/ttyUSB0<\/strong>.<\/p><p>By default, containers run in isolation and can&rsquo;t access host devices. To allow access, explicitly pass the device when you <a href=\"\/tutorials\/how-to-create-docker-container\">start the container<\/a> using the <strong>&ndash;device<\/strong> flag:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run --device=\/dev\/ttyUSB0 my-image<\/pre><p>If the container needs broader permissions but not full device access, grant specific Linux capabilities with the <strong>&ndash;cap-add<\/strong> flag:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run --cap-add=SYS_ADMIN my-image<\/pre><p>This approach follows the principle of least privilege &ndash; grant only the capabilities the container actually needs. Common capabilities include <strong>NET_ADMIN<\/strong> for network configuration and <strong>SYS_PTRACE<\/strong> for debugging.<\/p><p>When specific devices or capabilities aren&rsquo;t enough, you can use the <strong>&ndash;privileged<\/strong> flag:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run --privileged my-image<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69e7327ed70f1\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1860\" height=\"334\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-run-privileged-my-image.png\/public\" alt=\"Terminal command running a container with the privileged flag\" class=\"wp-image-137660\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-run-privileged-my-image.png\/w=1860,fit=scale-down 1860w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-run-privileged-my-image.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-run-privileged-my-image.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-run-privileged-my-image.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-run-privileged-my-image.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-docker-run-privileged-my-image.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1860px) 100vw, 1860px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>This option gives the container full access to all host devices and disables most security isolation features.<\/p><p>Containers started in this mode can gain root-level control over the host system. Use <strong>&ndash;privileged<\/strong> only in trusted local development environments or when no safer alternatives are applicable.<\/p><p>For production workloads, always prefer <strong>&ndash;device<\/strong> for specific hardware or<strong> &ndash;cap-add<\/strong> for specific capabilities.<\/p><h2 class=\"wp-block-heading\" id=\"h-6-restart-docker-and-test-your-setup\"><strong>6. Restart Docker and test your setup<\/strong><\/h2><p>After you apply user group changes or permission fixes, restart the Docker service so the daemon recognizes the updated configuration.<\/p><p>Restart Docker with <strong>systemctl<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo systemctl restart docker<\/pre><p>After the service restarts, verify the fix by running the standard <strong>hello-world<\/strong> container without using <strong>sudo<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run hello-world<\/pre><p>If the image downloads and runs successfully and displays a welcome message, you&rsquo;ve resolved the permission issue.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69e7327ed7b67\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"2150\" height=\"1060\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-run-hello-world-download-complete-hello-from-docker-highlighted.png\/public\" alt=\"Docker hello-world container output confirming successful setup\" class=\"wp-image-137661\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-run-hello-world-download-complete-hello-from-docker-highlighted.png\/w=2150,fit=scale-down 2150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-run-hello-world-download-complete-hello-from-docker-highlighted.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-run-hello-world-download-complete-hello-from-docker-highlighted.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-run-hello-world-download-complete-hello-from-docker-highlighted.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-run-hello-world-download-complete-hello-from-docker-highlighted.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-run-hello-world-download-complete-hello-from-docker-highlighted.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/04\/terminal-run-hello-world-download-complete-hello-from-docker-highlighted.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 2150px) 100vw, 2150px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If the error persists, restart the entire system to make sure all group memberships and session changes take effect:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo reboot<\/pre><h2 class=\"wp-block-heading\" id=\"h-what-should-you-learn-next-in-docker\"><strong>What should you learn next in Docker?<\/strong><\/h2><p>Now that your Docker installation works without permission errors, you&rsquo;re ready to work with containers confidently and securely.<\/p><p>Fixing environment issues is an essential first step in your Docker learning path. It lets you focus on building and deploying applications instead of troubleshooting setup problems.<\/p><p>As a next step, build a deeper understanding of core Docker concepts by reading our complete <a href=\"\/tutorials\/docker-tutorial\">Docker tutorial<\/a>. It covers image management, container lifecycles, Docker Compose, data persistence, and container networking.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Docker permission denied error usually occurs when your user account doesn&rsquo;t have permission to access the Docker daemon socket [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/tutorials\/how-to-fix-docker-permission-denied-error\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":411,"featured_media":121636,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How to fix the Docker permission denied error?","rank_math_description":"Learn how to fix the Docker permission denied error, from adding users to the Docker group to restarting the daemon and testing your setup.","rank_math_focus_keyword":"docker permission denied","footnotes":""},"categories":[22646,22644],"tags":[],"class_list":["post-126856","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pre-installed-applications","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-fix-docker-permission-denied-error","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-fix-docker-permission-denied-error","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-fix-docker-permission-denied-error","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-fix-docker-permission-denied-error","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-fix-docker-permission-denied-error","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-fix-docker-permission-denied-error","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-fix-docker-permission-denied-error","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-fix-docker-permission-denied-error","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/126856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/users\/411"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/comments?post=126856"}],"version-history":[{"count":6,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/126856\/revisions"}],"predecessor-version":[{"id":138510,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/126856\/revisions\/138510"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/media\/121636"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/media?parent=126856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/categories?post=126856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/tags?post=126856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}