{"id":40584,"date":"2026-03-24T12:36:23","date_gmt":"2026-03-24T05:36:23","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=40584"},"modified":"2026-03-24T12:40:07","modified_gmt":"2026-03-24T05:40:07","slug":"huong-dan-cai-dat-docker-tren-vps","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/","title":{"rendered":"H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t Docker Tr\u00ean VPS (Ubuntu &#038; Debian) Chu\u1ea9n 2026"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed8I DUNG<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Dieu-kien-tien-quyet-truoc-khi-cai-dat-Docker\" >\u0110i\u1ec1u ki\u1ec7n ti\u00ean quy\u1ebft tr\u01b0\u1edbc khi c\u00e0i \u0111\u1eb7t Docker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Huong-dan-cai-dat-Docker-tren-Ubuntu-Tung-buoc\" >H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker tr\u00ean Ubuntu (T\u1eebng b\u01b0\u1edbc)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Cach-cai-dat-Docker-tren-VPS-Debian-co-gi-khac-biet\" >C\u00e1ch c\u00e0i \u0111\u1eb7t Docker tr\u00ean VPS Debian c\u00f3 g\u00ec kh\u00e1c bi\u1ec7t?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Huong-dan-cai-dat-Docker-Compose-Plugin-Bat-buoc-cho-du-an-thuc-te\" >H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker Compose Plugin (B\u1eaft bu\u1ed9c cho d\u1ef1 \u00e1n th\u1ef1c t\u1ebf)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Kiem-tra-thanh-qua-Chay-thu-Container-dau-tien\" >Ki\u1ec3m tra th\u00e0nh qu\u1ea3: Ch\u1ea1y th\u1eed Container \u0111\u1ea7u ti\u00ean<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Cau-hinh-sau-cai-dat-Khac-phuc-loi-Permission-Denied\" >C\u1ea5u h\u00ecnh sau c\u00e0i \u0111\u1eb7t: Kh\u1eafc ph\u1ee5c l\u1ed7i Permission Denied<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Canh-bao-bao-mat-Docker-va-Tuong-lua-UFW-Danh-cho-System-Admin\" >C\u1ea3nh b\u00e1o b\u1ea3o m\u1eadt: Docker v\u00e0 T\u01b0\u1eddng l\u1eeda UFW (D\u00e0nh cho System Admin)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#VPS-Gia-Re-Toc-Do-Cao-%E2%80%94-Toi-uu-cho-Docker-Container\" >VPS Gi\u00e1 R\u1ebb T\u1ed1c \u0110\u1ed9 Cao \u2014 T\u1ed1i \u01b0u cho Docker &amp; Container<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#FAQs-%E2%80%94-Cac-cau-hoi-thuong-gap-khi-setup-Docker-tren-Server\" >FAQs \u2014 C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p khi setup Docker tr\u00ean Server<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Cai-dat-xong-lam-sao-de-Docker-tu-khoi-dong-cung-VPS\" >C\u00e0i \u0111\u1eb7t xong l\u00e0m sao \u0111\u1ec3 Docker t\u1ef1 kh\u1edfi \u0111\u1ed9ng c\u00f9ng VPS?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Lam-cach-nao-de-go-cai-dat-Docker-hoan-toan-khoi-VPS\" >L\u00e0m c\u00e1ch n\u00e0o \u0111\u1ec3 g\u1ee1 c\u00e0i \u0111\u1eb7t Docker ho\u00e0n to\u00e0n kh\u1ecfi VPS?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/#Ket-luan\" >K\u1ebft lu\u1eadn<\/a><\/li><\/ul><\/nav><\/div>\n<p><!-- OVERVIEW BLOCK --><\/p>\n<div class=\"summary\">\n<p><strong>T\u00f3m t\u1eaft nhanh:<\/strong> H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker tr\u00ean VPS Linux y\u00eau c\u1ea7u truy c\u1eadp SSH v\u1edbi quy\u1ec1n <code>root<\/code> ho\u1eb7c <code>sudo<\/code>. Qu\u00e1 tr\u00ecnh g\u1ed3m ba giai \u0111o\u1ea1n c\u1ed1t l\u00f5i: x\u00f3a package xung \u0111\u1ed9t c\u0169, th\u00eam Docker repository ch\u00ednh th\u1ee9c b\u1eb1ng GPG key, v\u00e0 c\u00e0i \u0111\u1eb7t Docker Engine qua <code>apt<\/code>. B\u00e0i n\u00e0y t\u1eadp trung v\u00e0o Ubuntu (20.04, 22.04, 24.04 LTS) v\u00e0 Debian (11, 12) \u2014 hai distro Linux ph\u1ed5 bi\u1ebfn nh\u1ea5t tr\u00ean m\u00f4i tr\u01b0\u1eddng VPS th\u1ef1c t\u1ebf.<\/p>\n<ul>\n<li>D\u00f9ng <code>apt<\/code> thay v\u00ec t\u1ea3i file <code>.deb<\/code> th\u1ee7 c\u00f4ng \u2014 h\u1ec7 th\u1ed1ng s\u1ebd t\u1ef1 x\u1eed l\u00fd c\u1eadp nh\u1eadt khi c\u00f3 b\u1ea3n v\u00e1 m\u1edbi.<\/li>\n<li>C\u00e0i k\u00e8m <code>docker-compose-plugin<\/code> ngay t\u1eeb \u0111\u1ea7u: h\u1ea7u h\u1ebft d\u1ef1 \u00e1n th\u1ef1c t\u1ebf \u0111\u1ec1u c\u1ea7n file <code>docker-compose.yml<\/code>.<\/li>\n<li>Docker Compose V2 d\u00f9ng l\u1ec7nh <code>docker compose<\/code> (kh\u00f4ng c\u00f3 g\u1ea1ch ngang) \u2014 V1 standalone \u0111\u00e3 b\u1ecb khai t\u1eed ch\u00ednh th\u1ee9c t\u1eeb th\u00e1ng 7\/2023.<\/li>\n<li>Docker can thi\u1ec7p tr\u1ef1c ti\u1ebfp v\u00e0o <code>iptables<\/code>, khi\u1ebfn c\u00e1c port publish b\u1ecf qua UFW ho\u00e0n to\u00e0n \u2014 c\u1ea7n x\u1eed l\u00fd ri\u00eang n\u1ebfu d\u00f9ng t\u01b0\u1eddng l\u1eeda.<\/li>\n<\/ul>\n<\/div>\n<p>VPS m\u1edbi c\u1ea5p xong, vi\u1ec7c \u0111\u1ea7u ti\u00ean nhi\u1ec1u dev l\u00e0m l\u00e0 SSH v\u00e0o r\u1ed3i b\u1eaft \u0111\u1ea7u c\u00e0i NodeJS, Python, MySQL th\u1eb3ng l\u00ean h\u1ec7 th\u1ed1ng. V\u00e0i tu\u1ea7n sau, m\u00e1y ch\u1ee7 l\u1ed9n x\u1ed9n v\u1edbi \u0111\u1ee7 lo\u1ea1i th\u01b0 vi\u1ec7n xung \u0111\u1ed9t nhau, mu\u1ed1n rollback th\u00ec kh\u00f4ng bi\u1ebft t\u1eeb \u0111\u00e2u. Docker gi\u1ea3i quy\u1ebft ch\u00ednh x\u00e1c v\u1ea5n \u0111\u1ec1 n\u00e0y \u2014 m\u1ed7i \u1ee9ng d\u1ee5ng ch\u1ea1y trong container \u0111\u1ed9c l\u1eadp, m\u00f4i tr\u01b0\u1eddng s\u1ea1ch, deploy l\u1ea1i ch\u1ec9 m\u1ea5t v\u00e0i gi\u00e2y. B\u00e0i vi\u1ebft n\u00e0y h\u01b0\u1edbng d\u1eabn c\u00e1ch c\u00e0i \u0111\u1eb7t Docker v\u00e0 Docker Compose tr\u00ean VPS Ubuntu v\u00e0 Debian t\u1eebng b\u01b0\u1edbc qua CLI, k\u00e8m c\u1ea5u h\u00ecnh b\u1ea3o m\u1eadt th\u1ef1c chi\u1ebfn m\u00e0 ph\u1ea7n l\u1edbn tutorial ph\u1ed5 th\u00f4ng hay b\u1ecf qua.<\/p>\n<figure id=\"attachment_40591\" aria-describedby=\"caption-attachment-40591\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-40591\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Huong-dan-cai-dat-Docker-tren-VPS.webp\" alt=\"H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker tr\u00ean VPS\" width=\"800\" height=\"537\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Huong-dan-cai-dat-Docker-tren-VPS.webp 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Huong-dan-cai-dat-Docker-tren-VPS-300x201.webp 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Huong-dan-cai-dat-Docker-tren-VPS-768x516.webp 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-40591\" class=\"wp-caption-text\">H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker tr\u00ean VPS<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Dieu-kien-tien-quyet-truoc-khi-cai-dat-Docker\"><\/span>\u0110i\u1ec1u ki\u1ec7n ti\u00ean quy\u1ebft tr\u01b0\u1edbc khi c\u00e0i \u0111\u1eb7t Docker<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tr\u01b0\u1edbc khi ch\u1ea1y b\u1ea5t k\u1ef3 l\u1ec7nh n\u00e0o, h\u00e3y x\u00e1c nh\u1eadn 3 \u0111i\u1ec1u:<\/p>\n<ul>\n<li><strong>VPS ch\u1ea1y Linux 64-bit<\/strong> \u2014 Docker h\u1ed7 tr\u1ee3 Ubuntu 20.04\/22.04\/24.04 LTS v\u00e0 Debian 11\/12. RAM t\u1ed1i thi\u1ec3u 1 GB \u0111\u1ec3 daemon kh\u1edfi \u0111\u1ed9ng \u1ed5n \u0111\u1ecbnh; n\u1ebfu ch\u1ea1y nhi\u1ec1u container \u0111\u1ed3ng th\u1eddi n\u00ean d\u00f9ng t\u1eeb 2 GB tr\u1edf l\u00ean.<\/li>\n<li><strong>Ph\u1ea7n m\u1ec1m SSH<\/strong> \u2014 PuTTY (Windows) ho\u1eb7c Terminal (macOS\/Linux). K\u1ebft n\u1ed1i v\u00e0o VPS v\u1edbi t\u00e0i kho\u1ea3n <code>root<\/code> ho\u1eb7c t\u00e0i kho\u1ea3n c\u00f3 quy\u1ec1n <code>sudo<\/code>.<\/li>\n<li><strong>H\u1ec7 th\u1ed1ng \u0111\u00e3 c\u1eadp nh\u1eadt<\/strong> \u2014 Ch\u1ea1y <code>apt-get update &amp;&amp; apt-get upgrade -y<\/code> tr\u01b0\u1edbc khi c\u00e0i \u0111\u1ec3 tr\u00e1nh xung \u0111\u1ed9t package.<\/li>\n<\/ul>\n<div class=\"note-box\"><strong>M\u1ed9t l\u01b0u \u00fd nh\u1ecf:<\/strong> c\u00e1c l\u1ec7nh trong b\u00e0i n\u00e0y ch\u1ea1y v\u1edbi quy\u1ec1n <code>root<\/code> n\u00ean kh\u00f4ng c\u1ea7n th\u00eam <code>sudo<\/code> \u1edf \u0111\u1ea7u. N\u1ebfu b\u1ea1n \u0111ang d\u00f9ng t\u00e0i kho\u1ea3n th\u01b0\u1eddng, h\u00e3y th\u00eam <code>sudo<\/code> v\u00e0o tr\u01b0\u1edbc m\u1ed7i l\u1ec7nh, ho\u1eb7c chuy\u1ec3n sang <code>root<\/code> b\u1eb1ng <code>sudo -i<\/code>.<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Huong-dan-cai-dat-Docker-tren-Ubuntu-Tung-buoc\"><\/span>H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker tr\u00ean Ubuntu (T\u1eebng b\u01b0\u1edbc)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>T\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c c\u1ee7a Docker khuy\u1ebfn ngh\u1ecb c\u00e0i qua repository thay v\u00ec t\u1ea3i file <code>.deb<\/code> \u2014 l\u00fd do \u0111\u01a1n gi\u1ea3n: khi c\u00f3 b\u1ea3n c\u1eadp nh\u1eadt, <code>apt upgrade<\/code> s\u1ebd t\u1ef1 x\u1eed l\u00fd, kh\u00f4ng ph\u1ea3i t\u1ea3i tay. Quy tr\u00ecnh d\u01b0\u1edbi \u0111\u00e2y \u00e1p d\u1ee5ng cho Ubuntu 20.04, 22.04, v\u00e0 24.04 LTS.<\/p>\n<p><strong>B\u01b0\u1edbc 1: X\u00f3a c\u00e1c package Docker c\u0169 (tr\u00e1nh xung \u0111\u1ed9t)<\/strong><\/p>\n<p>N\u1ebfu VPS \u0111\u00e3 t\u1eebng c\u00e0i Docker theo c\u00e1ch kh\u00e1c (v\u00ed d\u1ee5 qua Snap ho\u1eb7c repo distro m\u1eb7c \u0111\u1ecbnh), c\u1ea7n x\u00f3a tr\u01b0\u1edbc \u0111\u1ec3 tr\u00e1nh conflict:<\/p>\n<pre><code>apt-get remove docker docker-engine docker.io containerd runc<\/code><\/pre>\n<p>N\u1ebfu m\u00e1y ch\u01b0a c\u00e0i Docker bao gi\u1edd, l\u1ec7nh n\u00e0y s\u1ebd b\u00e1o &#8220;kh\u00f4ng t\u00ecm th\u1ea5y package&#8221; \u2014 kh\u00f4ng sao, c\u1ee9 ti\u1ebfp t\u1ee5c.<\/p>\n<p><strong>B\u01b0\u1edbc 2: C\u00e0i c\u00e1c package ph\u1ee5 thu\u1ed9c v\u00e0 th\u00eam GPG key c\u1ee7a Docker<\/strong><\/p>\n<p>B\u01b0\u1edbc n\u00e0y th\u00eam kh\u00f3a GPG ch\u00ednh th\u1ee9c t\u1eeb Docker, Inc. v\u00e0o h\u1ec7 th\u1ed1ng \u2014 \u0111\u00e2y l\u00e0 c\u01a1 ch\u1ebf x\u00e1c minh ch\u1eef k\u00fd \u0111\u1ec3 <code>apt<\/code> tin t\u01b0\u1edfng repository:<\/p>\n<pre><code>apt-get update\r\napt-get install -y ca-certificates curl gnupg\r\ninstall -m 0755 -d \/etc\/apt\/keyrings\r\ncurl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg\r\nchmod a+r \/etc\/apt\/keyrings\/docker.gpg<\/code><\/pre>\n<p><strong>B\u01b0\u1edbc 3: Th\u00eam Docker repository v\u00e0o sources.list<\/strong><\/p>\n<p>L\u1ec7nh d\u01b0\u1edbi \u0111\u00e2y t\u1ef1 \u0111\u1ed9ng l\u1ea5y t\u00ean phi\u00ean b\u1ea3n Ubuntu hi\u1ec7n t\u1ea1i (v\u00ed d\u1ee5 <code>jammy<\/code> cho 22.04, <code>focal<\/code> cho 20.04, <code>noble<\/code> cho 24.04) v\u00e0 ghi v\u00e0o file c\u1ea5u h\u00ecnh apt:<\/p>\n<pre><code>echo \\\r\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=\/etc\/apt\/keyrings\/docker.gpg] \\\r\n  https:\/\/download.docker.com\/linux\/ubuntu \\\r\n  \"$(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\")\" stable\" | \\\r\n  tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null<\/code><\/pre>\n<p><strong>B\u01b0\u1edbc 4: C\u00e0i Docker Engine v\u00e0 c\u00e1c plugin \u0111i k\u00e8m<\/strong><\/p>\n<p>C\u1eadp nh\u1eadt danh s\u00e1ch package r\u1ed3i c\u00e0i \u0111\u1eb7t m\u1ed9t l\u1ea7n duy nh\u1ea5t \u2014 g\u00f3i n\u00e0y bao g\u1ed3m Docker Engine, CLI, containerd runtime, Buildx plugin v\u00e0 Compose plugin:<\/p>\n<pre><code>apt-get update\r\napt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/pre>\n<p><strong>B\u01b0\u1edbc 5: Ki\u1ec3m tra tr\u1ea1ng th\u00e1i Docker daemon<\/strong><\/p>\n<p>Sau khi c\u00e0i xong, Docker daemon s\u1ebd t\u1ef1 kh\u1edfi \u0111\u1ed9ng. X\u00e1c nh\u1eadn b\u1eb1ng l\u1ec7nh:<\/p>\n<pre><code>systemctl status docker<\/code><\/pre>\n<p>Output tr\u1ea3 v\u1ec1 <code>Active: active (running)<\/code> l\u00e0 ho\u00e0n t\u1ea5t. N\u1ebfu th\u1ea5y <code>inactive<\/code>, ch\u1ea1y th\u00eam <code>systemctl start docker<\/code>.<\/p>\n<figure id=\"attachment_40587\" aria-describedby=\"caption-attachment-40587\" style=\"width: 1905px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-40587\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Man-hinh-terminal-khi-cai-dat-Docker-thanh-cong.png\" alt=\"M\u00e0n h\u00ecnh terminal khi c\u00e0i \u0111\u1eb7t Docker th\u00e0nh c\u00f4ng\" width=\"1905\" height=\"424\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Man-hinh-terminal-khi-cai-dat-Docker-thanh-cong.png 1905w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Man-hinh-terminal-khi-cai-dat-Docker-thanh-cong-300x67.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Man-hinh-terminal-khi-cai-dat-Docker-thanh-cong-1024x228.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Man-hinh-terminal-khi-cai-dat-Docker-thanh-cong-768x171.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Man-hinh-terminal-khi-cai-dat-Docker-thanh-cong-1536x342.png 1536w\" sizes=\"auto, (max-width: 1905px) 100vw, 1905px\" \/><figcaption id=\"caption-attachment-40587\" class=\"wp-caption-text\">M\u00e0n h\u00ecnh terminal khi c\u00e0i \u0111\u1eb7t Docker th\u00e0nh c\u00f4ng<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Cach-cai-dat-Docker-tren-VPS-Debian-co-gi-khac-biet\"><\/span>C\u00e1ch c\u00e0i \u0111\u1eb7t Docker tr\u00ean VPS Debian c\u00f3 g\u00ec kh\u00e1c bi\u1ec7t?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Th\u1ef1c ra kh\u00f4ng nhi\u1ec1u. Quy tr\u00ecnh tr\u00ean Debian 11 (Bullseye) v\u00e0 Debian 12 (Bookworm) g\u1ea7n nh\u01b0 gi\u1ed1ng h\u1ec7t Ubuntu \u2014 x\u00f3a package c\u0169, c\u00e0i dependencies, th\u00eam GPG key, c\u00e0i Docker. <strong>\u0110i\u1ec3m kh\u00e1c bi\u1ec7t duy nh\u1ea5t<\/strong> n\u1eb1m \u1edf URL repository v\u00e0 c\u00e1ch l\u1ea5y t\u00ean phi\u00ean b\u1ea3n h\u1ec7 \u0111i\u1ec1u h\u00e0nh.<\/p>\n<p>Thay v\u00ec 4 l\u1ec7nh \u1edf b\u01b0\u1edbc 2 v\u00e0 3 c\u1ee7a Ubuntu, b\u1ea1n d\u00f9ng l\u1ec7nh t\u01b0\u01a1ng \u0111\u01b0\u01a1ng sau cho Debian:<\/p>\n<pre><code>apt-get update\r\napt-get install -y ca-certificates curl gnupg\r\ninstall -m 0755 -d \/etc\/apt\/keyrings\r\ncurl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg\r\nchmod a+r \/etc\/apt\/keyrings\/docker.gpg\r\n\r\necho \\\r\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=\/etc\/apt\/keyrings\/docker.gpg] \\\r\n  https:\/\/download.docker.com\/linux\/debian \\\r\n  \"$(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\")\" stable\" | \\\r\n  tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null<\/code><\/pre>\n<p>Hai ch\u1ed7 thay \u0111\u1ed5i so v\u1edbi Ubuntu: <code>ubuntu<\/code> \u0111\u1ed5i th\u00e0nh <code>debian<\/code> trong URL GPG v\u00e0 URL repository. Ph\u1ea7n c\u00f2n l\u1ea1i \u2014 c\u00e0i Docker Engine, ki\u1ec3m tra systemctl \u2014 gi\u1eef nguy\u00ean ho\u00e0n to\u00e0n.<\/p>\n<p>Sau khi th\u00eam repository xong, ch\u1ea1y l\u1ec7nh c\u00e0i \u0111\u1eb7t gi\u1ed1ng h\u1ec7t Ubuntu:<\/p>\n<pre><code>apt-get update\r\napt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Huong-dan-cai-dat-Docker-Compose-Plugin-Bat-buoc-cho-du-an-thuc-te\"><\/span>H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker Compose Plugin (B\u1eaft bu\u1ed9c cho d\u1ef1 \u00e1n th\u1ef1c t\u1ebf)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>N\u1ebfu b\u1ea1n \u0111\u00e3 ch\u1ea1y l\u1ec7nh <code>apt-get install<\/code> \u1edf b\u01b0\u1edbc 4 ph\u00eda tr\u00ean v\u1edbi \u0111\u1ea7y \u0111\u1ee7 c\u00e1c g\u00f3i \u2014 bao g\u1ed3m <code>docker-compose-plugin<\/code> \u2014 th\u00ec Docker Compose V2 \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t xong. Kh\u00f4ng c\u1ea7n l\u00e0m th\u00eam b\u01b0\u1edbc n\u00e0o.<\/p>\n<p>X\u00e1c nh\u1eadn b\u1eb1ng l\u1ec7nh:<\/p>\n<pre><code>docker compose version<\/code><\/pre>\n<figure id=\"attachment_40588\" aria-describedby=\"caption-attachment-40588\" style=\"width: 467px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-40588\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Kiem-tra-phien-ban-Docker.png\" alt=\"Ki\u1ec3m tra phi\u00ean b\u1ea3n Docker\" width=\"467\" height=\"59\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Kiem-tra-phien-ban-Docker.png 467w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Kiem-tra-phien-ban-Docker-300x38.png 300w\" sizes=\"auto, (max-width: 467px) 100vw, 467px\" \/><figcaption id=\"caption-attachment-40588\" class=\"wp-caption-text\">Ki\u1ec3m tra phi\u00ean b\u1ea3n Docker<\/figcaption><\/figure>\n<div class=\"note-box\"><strong>L\u01b0u \u00fd quan tr\u1ecdng:<\/strong> l\u1ec7nh \u0111\u00fang l\u00e0 <code>docker compose<\/code> (c\u00f3 d\u1ea5u c\u00e1ch, kh\u00f4ng c\u00f3 g\u1ea1ch ngang). <code>docker-compose<\/code> v\u1edbi g\u1ea1ch ngang l\u00e0 c\u00fa ph\u00e1p c\u1ee7a Compose V1 standalone \u2014 phi\u00ean b\u1ea3n n\u00e0y \u0111\u00e3 b\u1ecb Docker ch\u00ednh th\u1ee9c khai t\u1eed t\u1eeb th\u00e1ng 7\/2023 v\u00e0 kh\u00f4ng c\u00f2n nh\u1eadn b\u1ea3n c\u1eadp nh\u1eadt b\u1ea3o m\u1eadt. N\u1ebfu tutorial n\u00e0o v\u1eabn h\u01b0\u1edbng d\u1eabn t\u1ea3i file binary qua <code>curl<\/code> t\u1eeb GitHub, \u0111\u00f3 l\u00e0 c\u00e1ch c\u0169.<\/div>\n<p>L\u00fd do c\u00e0i Compose ngay t\u1eeb \u0111\u1ea7u: g\u1ea7n nh\u01b0 100% d\u1ef1 \u00e1n th\u1ef1c t\u1ebf \u2014 t\u1eeb \u1ee9ng d\u1ee5ng web \u0111\u01a1n gi\u1ea3n \u0111\u1ebfn stack \u0111\u1ea7y \u0111\u1ee7 v\u1edbi database, cache, worker \u2014 \u0111\u1ec1u \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a b\u1eb1ng file <code>docker-compose.yml<\/code>. Thi\u1ebfu Compose, b\u1ea1n s\u1ebd ph\u1ea3i g\u00f5 l\u1ec7nh <code>docker run<\/code> d\u00e0i d\u00f2ng th\u1ee7 c\u00f4ng m\u1ed7i l\u1ea7n kh\u1edfi \u0111\u1ed9ng.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Kiem-tra-thanh-qua-Chay-thu-Container-dau-tien\"><\/span>Ki\u1ec3m tra th\u00e0nh qu\u1ea3: Ch\u1ea1y th\u1eed Container \u0111\u1ea7u ti\u00ean<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>C\u00e0i xong th\u00ec ph\u1ea3i ki\u1ec3m tra. L\u1ec7nh d\u01b0\u1edbi \u0111\u00e2y l\u00e0 b\u00e0i test chu\u1ea9n m\u00e0 ch\u00ednh Docker d\u00f9ng \u0111\u1ec3 x\u00e1c minh c\u00e0i \u0111\u1eb7t ho\u1ea1t \u0111\u1ed9ng \u0111\u00fang:<\/p>\n<pre><code>docker run hello-world<\/code><\/pre>\n<p>Lu\u1ed3ng x\u1eed l\u00fd di\u1ec5n ra theo th\u1ee9 t\u1ef1: Docker daemon nh\u1eadn l\u1ec7nh \u2192 ki\u1ec3m tra local image <code>hello-world<\/code> (ch\u01b0a c\u00f3) \u2192 t\u1ef1 \u0111\u1ed9ng pull t\u1eeb Docker Hub \u2192 t\u1ea1o container \u2192 ch\u1ea1y v\u00e0 in ra th\u00f4ng b\u00e1o th\u00e0nh c\u00f4ng. N\u1ebfu terminal hi\u1ec3n th\u1ecb \u0111o\u1ea1n text b\u1eaft \u0111\u1ea7u b\u1eb1ng <em>&#8220;Hello from Docker!&#8221;<\/em>, m\u1ecdi th\u1ee9 \u0111\u00e3 ho\u1ea1t \u0111\u1ed9ng \u0111\u00fang \u2014 t\u1eeb network, daemon, \u0111\u1ebfn quy\u1ec1n truy c\u1eadp Docker Hub.<\/p>\n<figure id=\"attachment_40589\" aria-describedby=\"caption-attachment-40589\" style=\"width: 662px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-40589\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Chay-thu-container-dau-tien-bang-lenh-docker-run-hello-world.png\" alt=\"Ch\u1ea1y th\u1eed container \u0111\u1ea7u ti\u00ean b\u1eb1ng l\u1ec7nh docker run hello-world\" width=\"662\" height=\"577\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Chay-thu-container-dau-tien-bang-lenh-docker-run-hello-world.png 662w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/03\/Chay-thu-container-dau-tien-bang-lenh-docker-run-hello-world-300x261.png 300w\" sizes=\"auto, (max-width: 662px) 100vw, 662px\" \/><figcaption id=\"caption-attachment-40589\" class=\"wp-caption-text\">Ch\u1ea1y th\u1eed container \u0111\u1ea7u ti\u00ean b\u1eb1ng l\u1ec7nh docker run hello-world<\/figcaption><\/figure>\n<p>Container s\u1ebd t\u1ef1 t\u1eaft sau khi in xong th\u00f4ng b\u00e1o. \u0110\u00e2y l\u00e0 h\u00e0nh vi b\u00ecnh th\u01b0\u1eddng; <code>hello-world<\/code> \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 test, kh\u00f4ng ph\u1ea3i \u0111\u1ec3 ch\u1ea1y li\u00ean t\u1ee5c.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cau-hinh-sau-cai-dat-Khac-phuc-loi-Permission-Denied\"><\/span>C\u1ea5u h\u00ecnh sau c\u00e0i \u0111\u1eb7t: Kh\u1eafc ph\u1ee5c l\u1ed7i Permission Denied<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>L\u1ed7i <code>permission denied while trying to connect to the Docker daemon socket<\/code> x\u1ea3y ra v\u00ec Docker daemon bind v\u1edbi Unix socket <code>\/var\/run\/docker.sock<\/code> thu\u1ed9c s\u1edf h\u1eefu c\u1ee7a <code>root<\/code>. Ng\u01b0\u1eddi d\u00f9ng th\u01b0\u1eddng mu\u1ed1n g\u00f5 l\u1ec7nh <code>docker<\/code> tr\u1ef1c ti\u1ebfp m\u00e0 kh\u00f4ng ph\u1ea3i th\u00eam <code>sudo<\/code> m\u1ed7i l\u1ea7n \u2014 c\u00e1ch l\u00e0m \u0111\u00fang l\u00e0 th\u00eam user v\u00e0o group <code>docker<\/code>, kh\u00f4ng ph\u1ea3i c\u1ea5p quy\u1ec1n <code>root<\/code>.<\/p>\n<p>Hai l\u1ec7nh c\u1ea7n ch\u1ea1y:<\/p>\n<pre><code>usermod -aG docker $USER\r\nnewgrp docker<\/code><\/pre>\n<p>L\u1ec7nh <code>usermod<\/code> th\u00eam user hi\u1ec7n t\u1ea1i v\u00e0o group <code>docker<\/code>. <code>newgrp docker<\/code> \u00e1p d\u1ee5ng thay \u0111\u1ed5i ngay trong session hi\u1ec7n t\u1ea1i \u2014 thay th\u1ebf cho vi\u1ec7c ph\u1ea3i logout v\u00e0 login l\u1ea1i. Sau khi ch\u1ea1y xong, th\u1eed <code>docker ps<\/code> \u0111\u1ec3 x\u00e1c nh\u1eadn kh\u00f4ng c\u00f2n l\u1ed7i permission.<\/p>\n<p>M\u1ed9t \u0111i\u1ec3m c\u1ea7n l\u01b0u \u00fd t\u1eeb g\u00f3c \u0111\u1ed9 b\u1ea3o m\u1eadt: th\u00e0nh vi\u00ean trong group <code>docker<\/code> c\u00f3 quy\u1ec1n t\u01b0\u01a1ng \u0111\u01b0\u01a1ng <code>root<\/code> tr\u00ean m\u00e1y ch\u1ee7, v\u00ec Docker daemon ch\u1ea1y v\u1edbi quy\u1ec1n root v\u00e0 user trong group n\u00e0y c\u00f3 th\u1ec3 mount volume t\u00f9y \u00fd. Tr\u00ean VPS c\u00e1 nh\u00e2n ho\u1eb7c dev server, \u0111i\u1ec1u n\u00e0y ch\u1ea5p nh\u1eadn \u0111\u01b0\u1ee3c. Tr\u00ean production server nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng, c\u1ea7n c\u00e2n nh\u1eafc k\u1ef9 h\u01a1n.<\/p>\n<div class=\"warning-box\">\n<h2><span class=\"ez-toc-section\" id=\"Canh-bao-bao-mat-Docker-va-Tuong-lua-UFW-Danh-cho-System-Admin\"><\/span>C\u1ea3nh b\u00e1o b\u1ea3o m\u1eadt: Docker v\u00e0 T\u01b0\u1eddng l\u1eeda UFW (D\u00e0nh cho System Admin)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Docker bypass UFW ho\u00e0n to\u00e0n \u2014 kh\u00f4ng ph\u1ea3i bug, m\u00e0 l\u00e0 thi\u1ebft k\u1ebf c\u00f3 ch\u1ee7 \u0111\u00edch. Khi b\u1ea1n ch\u1ea1y <code>docker run -p 8080:80 ...<\/code>, Docker ghi th\u1eb3ng rule <code>ACCEPT<\/code> v\u00e0o chain <code>DOCKER<\/code> trong <code>iptables<\/code>, tr\u01b0\u1edbc c\u1ea3 chain <code>INPUT<\/code> m\u00e0 UFW qu\u1ea3n l\u00fd. H\u1ec7 qu\u1ea3: port 8080 m\u1edf ra internet d\u00f9 UFW \u0111ang block port \u0111\u00f3.<\/p>\n<p>T\u00ecnh hu\u1ed1ng th\u1ef1c t\u1ebf d\u1ec5 x\u1ea3y ra: b\u1ea1n deploy m\u1ed9t \u1ee9ng d\u1ee5ng n\u1ed9i b\u1ed9, ngh\u0129 r\u1eb1ng UFW \u0111\u00e3 ch\u1eb7n port \u0111\u00f3 v\u1edbi ng\u01b0\u1eddi ngo\u00e0i. Th\u1ef1c t\u1ebf, b\u1ea5t k\u1ef3 ai c\u00f3 IP \u0111\u1ec1u truy c\u1eadp \u0111\u01b0\u1ee3c. \u0110\u00e2y l\u00e0 lo\u1ea1i l\u1ed7 h\u1ed5ng kh\u00f4ng c\u00f3 log c\u1ea3nh b\u00e1o, kh\u00f4ng c\u00f3 th\u00f4ng b\u00e1o \u2014 ch\u1ec9 ph\u00e1t hi\u1ec7n khi r\u00e0 so\u00e1t l\u1ea1i c\u1ea5u h\u00ecnh ho\u1eb7c khi \u0111\u00e3 qu\u00e1 mu\u1ed9n.<\/p>\n<p>C\u00f3 hai c\u00e1ch x\u1eed l\u00fd th\u1ef1c chi\u1ebfn:<\/p>\n<ul>\n<li><strong>Bind port v\u00e0o localhost thay v\u00ec <code>0.0.0.0<\/code><\/strong> \u2014 thay v\u00ec <code>-p 8080:80<\/code>, d\u00f9ng <code>-p 127.0.0.1:8080:80<\/code>. Port ch\u1ec9 l\u1eafng nghe tr\u00ean loopback, kh\u00f4ng expose ra internet. Sau \u0111\u00f3 d\u00f9ng Nginx ho\u1eb7c Caddy l\u00e0m reverse proxy \u0111\u1ec3 forward traffic t\u1eeb ngo\u00e0i v\u00e0o sau khi qua x\u00e1c th\u1ef1c ho\u1eb7c SSL.<\/li>\n<li><strong>C\u1ea5u h\u00ecnh <code>DOCKER-USER<\/code> chain<\/strong> \u2014 Docker cung c\u1ea5p chain <code>DOCKER-USER<\/code> trong iptables m\u00e0 admin c\u00f3 th\u1ec3 ghi rule v\u00e0o \u0111\u00f3. Rule trong chain n\u00e0y th\u1ef1c thi tr\u01b0\u1edbc chain <code>DOCKER<\/code>, cho ph\u00e9p ki\u1ec3m so\u00e1t traffic \u1edf m\u1ee9c th\u1ea5p h\u01a1n.<\/li>\n<\/ul>\n<p>V\u1edbi ph\u1ea7n l\u1edbn tr\u01b0\u1eddng h\u1ee3p, c\u00e1ch bind v\u00e0o <code>127.0.0.1<\/code> k\u1ebft h\u1ee3p Nginx reverse proxy l\u00e0 \u0111\u01a1n gi\u1ea3n v\u00e0 an to\u00e0n nh\u1ea5t \u2014 kh\u00f4ng c\u1ea7n can thi\u1ec7p s\u00e2u v\u00e0o iptables.<\/p>\n<\/div>\n<p><!-- CTA BOX --><\/p>\n<div style=\"background: linear-gradient(135deg, #1a3c6e 0%, #0f6cbf 100%); border-radius: 12px; padding: 28px 32px; margin: 40px 0; max-width: 100%; box-shadow: 0 4px 20px rgba(15,108,191,0.25);\">\n<div style=\"display: inline-block; background: rgba(255,255,255,0.15); border: 1px solid rgba(255,255,255,0.3); border-radius: 20px; padding: 4px 14px; margin-bottom: 16px;\"><span style=\"color: #ffffff; font-size: 12px; font-weight: 600; letter-spacing: 0.5px; text-transform: uppercase;\">InterData<\/span><\/div>\n<h3 style=\"color: #ffffff; font-size: 22px; font-weight: bold; margin: 0 0 8px 0; line-height: 1.3;\"><span class=\"ez-toc-section\" id=\"VPS-Gia-Re-Toc-Do-Cao-%E2%80%94-Toi-uu-cho-Docker-Container\"><\/span>VPS Gi\u00e1 R\u1ebb T\u1ed1c \u0110\u1ed9 Cao \u2014 T\u1ed1i \u01b0u cho Docker &amp; Container<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p style=\"color: rgba(255,255,255,0.85); font-size: 15px; margin: 0 0 20px 0; line-height: 1.6;\">Thu\u00ea VPS t\u1ea1i InterData \u0111\u1ec3 c\u00f3 n\u1ec1n t\u1ea3ng \u1ed5n \u0111\u1ecbnh cho m\u00f4i tr\u01b0\u1eddng Docker: \u1ed5 NVMe nhanh, IP s\u1ea1ch, \u0111a d\u1ea1ng c\u00e1c phi\u00ean b\u1ea3n Ubuntu\/Debian, h\u1ed7 tr\u1ee3 k\u1ef9 thu\u1eadt 24\/7.<\/p>\n<ul style=\"list-style: none; padding: 0; margin: 0 0 24px 0;\">\n<li style=\"color: rgba(255,255,255,0.9); font-size: 14px; padding: 5px 0; display: flex; align-items: flex-start;\"><span style=\"color: #4fc3f7; font-size: 16px; margin-right: 8px; flex-shrink: 0;\">\u2713<\/span>\u1ed4 c\u1ee9ng NVMe \u2014 Pull Docker Image nhanh, I\/O cao cho database container<\/li>\n<li style=\"color: rgba(255,255,255,0.9); font-size: 14px; padding: 5px 0; display: flex; align-items: flex-start;\"><span style=\"color: #4fc3f7; font-size: 16px; margin-right: 8px; flex-shrink: 0;\">\u2713<\/span>RAM dedicated (kh\u00f4ng chia s\u1ebb) \u2014 ch\u1ea1y nhi\u1ec1u container \u0111\u1ed3ng th\u1eddi \u1ed5n \u0111\u1ecbnh<\/li>\n<li style=\"color: rgba(255,255,255,0.9); font-size: 14px; padding: 5px 0; display: flex; align-items: flex-start;\"><span style=\"color: #4fc3f7; font-size: 16px; margin-right: 8px; flex-shrink: 0;\">\u2713<\/span>Datacenter Vi\u1ec7t Nam \u2014 \u0111\u1ed9 tr\u1ec5 th\u1ea5p, h\u1ed7 tr\u1ee3 k\u1ef9 thu\u1eadt 24\/7<\/li>\n<\/ul>\n<p><a style=\"display: inline-block; background: #ffffff; color: #1a3c6e; font-size: 15px; font-weight: bold; text-decoration: none; padding: 12px 28px; border-radius: 8px; transition: opacity 0.2s;\" href=\"https:\/\/interdata.vn\/thue-vps\/\" target=\"_blank\" rel=\"noopener\">Thu\u00ea VPS Gi\u00e1 R\u1ebb Ngay \u2192<\/a><\/p>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"FAQs-%E2%80%94-Cac-cau-hoi-thuong-gap-khi-setup-Docker-tren-Server\"><\/span>FAQs \u2014 C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p khi setup Docker tr\u00ean Server<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Cai-dat-xong-lam-sao-de-Docker-tu-khoi-dong-cung-VPS\"><\/span>C\u00e0i \u0111\u1eb7t xong l\u00e0m sao \u0111\u1ec3 Docker t\u1ef1 kh\u1edfi \u0111\u1ed9ng c\u00f9ng VPS?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>M\u1eb7c \u0111\u1ecbnh, Docker daemon ch\u01b0a \u0111\u01b0\u1ee3c b\u1eadt ch\u1ebf \u0111\u1ed9 autostart sau khi reboot. Ch\u1ea1y hai l\u1ec7nh sau \u0111\u1ec3 k\u00edch ho\u1ea1t:<\/p>\n<pre><code>systemctl enable docker\r\nsystemctl enable containerd<\/code><\/pre>\n<p>T\u1eeb th\u1eddi \u0111i\u1ec3m n\u00e0y, m\u1ed7i l\u1ea7n VPS kh\u1edfi \u0111\u1ed9ng l\u1ea1i \u2014 d\u00f9 do restart th\u1ee7 c\u00f4ng hay do s\u1ef1 c\u1ed1 m\u1ea5t \u0111i\u1ec7n \u2014 Docker daemon s\u1ebd t\u1ef1 l\u00ean c\u00f9ng h\u1ec7 th\u1ed1ng m\u00e0 kh\u00f4ng c\u1ea7n can thi\u1ec7p th\u00eam.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Lam-cach-nao-de-go-cai-dat-Docker-hoan-toan-khoi-VPS\"><\/span>L\u00e0m c\u00e1ch n\u00e0o \u0111\u1ec3 g\u1ee1 c\u00e0i \u0111\u1eb7t Docker ho\u00e0n to\u00e0n kh\u1ecfi VPS?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>G\u1ee1 Docker s\u1ea1ch ho\u00e0n to\u00e0n c\u1ea7n hai b\u01b0\u1edbc: x\u00f3a package v\u00e0 x\u00f3a d\u1eef li\u1ec7u t\u1ed3n \u0111\u1ecdng. Th\u1ee9 t\u1ef1 quan tr\u1ecdng \u2014 l\u00e0m ng\u01b0\u1ee3c l\u1ea1i s\u1ebd \u0111\u1ec3 l\u1ea1i r\u00e1c tr\u00ean h\u1ec7 th\u1ed1ng:<\/p>\n<pre><code>apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\r\nrm -rf \/var\/lib\/docker\r\nrm -rf \/var\/lib\/containerd<\/code><\/pre>\n<p>Th\u01b0 m\u1ee5c <code>\/var\/lib\/docker<\/code> ch\u1ee9a to\u00e0n b\u1ed9 images, containers, v\u00e0 volumes \u0111\u00e3 t\u1ea1o. N\u1ebfu c\u1ea7n gi\u1eef l\u1ea1i data tr\u01b0\u1edbc khi x\u00f3a, h\u00e3y backup th\u01b0 m\u1ee5c n\u00e0y ho\u1eb7c export t\u1eebng image c\u1ea7n thi\u1ebft b\u1eb1ng <code>docker save<\/code>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ket-luan\"><\/span>K\u1ebft lu\u1eadn<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ch\u1ec9 v\u1edbi v\u00e0i l\u1ec7nh qua <code>apt<\/code>, VPS Ubuntu ho\u1eb7c Debian c\u1ee7a b\u1ea1n \u0111\u00e3 c\u00f3 \u0111\u1ea7y \u0111\u1ee7 Docker Engine l\u1eabn Docker Compose V2 \u2014 s\u1eb5n s\u00e0ng cho b\u1ea5t k\u1ef3 stack n\u00e0o t\u1eeb web app \u0111\u01a1n gi\u1ea3n \u0111\u1ebfn microservices ph\u1ee9c t\u1ea1p. Ph\u1ea7n quan tr\u1ecdng nh\u1ea5t kh\u00f4ng n\u1eb1m \u1edf b\u01b0\u1edbc c\u00e0i \u0111\u1eb7t m\u00e0 n\u1eb1m \u1edf hai \u0111i\u1ec3m sau c\u00e0i: x\u1eed l\u00fd permission \u0111\u00fang c\u00e1ch v\u00e0 hi\u1ec3u r\u00f5 h\u00e0nh vi c\u1ee7a Docker v\u1edbi UFW \u0111\u1ec3 kh\u00f4ng \u0111\u1ec3 l\u1ed9 port kh\u00f4ng mong mu\u1ed1n.<\/p>\n<p>N\u1ebfu b\u1ea1n v\u1eabn ch\u01b0a r\u00f5 Image v\u00e0 Container ho\u1ea1t \u0111\u1ed9ng theo c\u01a1 ch\u1ebf n\u00e0o \u2014 t\u1ea1i sao Container x\u00f3a \u0111i th\u00ec data m\u1ea5t, t\u1ea1i sao Image c\u00f3 th\u1ec3 t\u00e1i s\u1eed d\u1ee5ng tr\u00ean nhi\u1ec1u m\u00e1y \u2014 h\u00e3y \u0111\u1ecdc th\u00eam b\u00e0i <a href=\"https:\/\/interdata.vn\/blog\/docker-la-gi\/\" target=\"_blank\" rel=\"noopener\">c\u1ea5u tr\u00fac v\u00e0 c\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Docker<\/a> \u0111\u1ec3 n\u1eafm n\u1ec1n t\u1ea3ng tr\u01b0\u1edbc khi \u0111i v\u00e0o c\u00e1c b\u01b0\u1edbc tri\u1ec3n khai n\u00e2ng cao h\u01a1n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00f3m t\u1eaft nhanh: H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker tr\u00ean VPS Linux y\u00eau c\u1ea7u truy c\u1eadp SSH v\u1edbi quy\u1ec1n root ho\u1eb7c sudo. Qu\u00e1 tr\u00ecnh g\u1ed3m ba giai \u0111o\u1ea1n c\u1ed1t l\u00f5i: x\u00f3a package xung \u0111\u1ed9t c\u0169, th\u00eam Docker repository ch\u00ednh th\u1ee9c b\u1eb1ng GPG key, v\u00e0 c\u00e0i \u0111\u1eb7t Docker Engine qua apt. B\u00e0i n\u00e0y t\u1eadp trung v\u00e0o Ubuntu<\/p>\n","protected":false},"author":2,"featured_media":40591,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[],"class_list":["post-40584","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/40584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=40584"}],"version-history":[{"count":5,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/40584\/revisions"}],"predecessor-version":[{"id":40594,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/40584\/revisions\/40594"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/40591"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=40584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=40584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=40584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}