{"id":43466,"date":"2026-09-09T11:04:58","date_gmt":"2026-09-09T04:04:58","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=43466"},"modified":"2026-09-09T11:06:10","modified_gmt":"2026-09-09T04:06:10","slug":"cai-dat-va-su-dung-docker-compose-tren-ubuntu","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-docker-compose-tren-ubuntu\/","title":{"rendered":"H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t V\u00e0 S\u1eed D\u1ee5ng Docker Compose Tr\u00ean Ubuntu Chi Ti\u1ebft"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 100%;\"><strong>C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Docker Compose tr\u00ean Ubuntu<\/strong> l\u00e0 vi\u1ec7c c\u1ea7n l\u00e0m \u0111\u00fang th\u1ee9 t\u1ef1 ngay t\u1eeb \u0111\u1ea7u, v\u00ec ch\u1ec9 c\u1ea7n b\u1ecf s\u00f3t m\u1ed9t b\u01b0\u1edbc l\u00e0 d\u00ednh l\u1ed7i &#8220;command not found&#8221; ho\u1eb7c &#8220;permission denied&#8221; ngay l\u1ea7n ch\u1ea1y th\u1eed \u0111\u1ea7u ti\u00ean. B\u00e0i n\u00e0y \u0111i th\u1eb3ng v\u00e0o t\u1eebng b\u01b0\u1edbc c\u00e0i \u0111\u1eb7t tr\u00ean Ubuntu 20.04, 22.04, 24.04, ph\u00e2n bi\u1ec7t r\u00f5 Compose V1 v\u00e0 V2, k\u00e8m v\u00ed d\u1ee5 file th\u1ef1c ch\u1ea1y \u0111\u01b0\u1ee3c \u0111\u1ec3 b\u1ea1n tri\u1ec3n khai ngay tr\u00ean VPS c\u1ee7a <a href=\"https:\/\/interdata.vn\/\">InterData<\/a>.<\/span><\/p>\n<div style=\"background-color: #eff6ff; padding: 20px; border: 1.5px solid #BFDBFE; border-radius: 12px; margin-bottom: 40px;\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; font-size: 18px; margin: 0 0 15px; color: #1e3a8a;\">N\u1ed8I DUNG B\u00c0I VI\u1ebeT<\/p>\n<ul style=\"list-style-type: none; padding-left: 0; margin: 0;\">\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section1\">Docker Compose l\u00e0 g\u00ec? Ph\u00e2n bi\u1ec7t docker-compose (V1) v\u00e0 docker compose (V2)<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section2\">\u0110i\u1ec1u ki\u1ec7n c\u1ea7n tr\u01b0\u1edbc khi c\u00e0i Docker Compose tr\u00ean Ubuntu<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section3\">H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker Compose tr\u00ean Ubuntu 20.04\/22.04\/24.04 t\u1eebng b\u01b0\u1edbc<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section4\">X\u1eed l\u00fd l\u1ed7i th\u01b0\u1eddng g\u1eb7p khi c\u00e0i v\u00e0 d\u00f9ng Docker Compose<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section5\">C\u00e1ch s\u1eed d\u1ee5ng Docker Compose sau khi c\u00e0i \u0111\u1eb7t: vi\u1ebft file docker-compose.yml<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section6\">C\u00e1c l\u1ec7nh Docker Compose c\u01a1 b\u1ea3n c\u1ea7n nh\u1edb<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section7\">Khi n\u00e0o Docker Compose ch\u01b0a \u0111\u1ee7, c\u1ea7n Swarm ho\u1eb7c Kubernetes?<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section8\">N\u00ean ch\u1ecdn VPS hay Cloud Server \u0111\u1ec3 ch\u1ea1y Docker Compose l\u00e2u d\u00e0i tr\u00ean Ubuntu?<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section9\">C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Docker Compose tr\u00ean Ubuntu<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n<style>\n.interdata-plan-carousel,.interdata-plan-carousel *{box-sizing:border-box}\n.interdata-plan-carousel{--blue:#005bea;--blue-dark:#004dcc;--text:#071832;--muted:#516173;--border:#d8e6fb;--bg:#f3f8ff;--shadow:0 5px 14px rgba(0,62,145,.08);background:var(--bg);padding:14px 56px 18px;position:relative;overflow:hidden;border-radius:20px;}\n.interdata-carousel-heading{color:#f00;font-family:Roboto,sans-serif;font-size:18px;line-height:1.35;font-weight:800;text-align:center;margin:0 0 14px}\n.interdata-plan-viewport{overflow:hidden;width:100%}\n.interdata-plan-track{display:flex;align-items:stretch;gap:12px;overflow:visible;padding:0 0 4px;transform:translate3d(0,0,0);transition:transform .45s ease;will-change:transform;touch-action:pan-y}\n.interdata-plan-card{flex:0 0 calc((100% - 24px)\/3);min-width:0;min-height:0!important;height:auto;background:#fff;border:1px solid var(--border);border-radius:8px;padding:15px 12px 13px;display:flex;flex-direction:column;box-shadow:var(--shadow)}\n.interdata-plan-title{color:var(--blue-dark);font-size:16px;line-height:1.22;font-weight:800;text-align:center;margin:0 0 7px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.interdata-plan-price{color:var(--blue-dark);font-size:24px;line-height:1;font-weight:900;text-align:center;margin-bottom:12px;white-space:nowrap;letter-spacing:0}\n.interdata-plan-price span{font-size:10px;font-weight:800;margin-left:2px}\n.interdata-plan-badge{align-self:center;display:inline-flex;align-items:center;justify-content:center;background:#ff3934;color:#fff;border-radius:5px;padding:7px 8px;font-size:9px;line-height:1;font-weight:800;margin-bottom:15px;white-space:nowrap;max-width:100%}\n.interdata-plan-features{list-style:none!important;padding:0!important;margin:0!important}\n.interdata-plan-features li{display:flex;gap:7px;align-items:flex-start;color:var(--text);font-size:12px;line-height:1.35;font-weight:700;text-align:left;margin:0 0 10px!important;padding:0!important}\n.interdata-plan-icon{width:14px;min-width:14px;height:14px;color:#0069ff;margin-top:2px}\n.interdata-plan-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}\n.interdata-plan-spacer{flex:1;min-height:16px}\n.interdata-plan-button{display:flex;align-items:center;justify-content:center;min-height:42px;width:100%;margin-top:auto!important;margin-bottom:0!important;background:var(--blue);color:#fff!important;border-radius:5px;font-size:13px;font-weight:800;text-decoration:none!important;box-shadow:0 7px 14px rgba(0,91,234,.24);transition:transform .2s ease,background .2s ease}\n.interdata-plan-button:hover{background:var(--blue-dark);color:#fff!important;transform:translateY(-1px)}\n.interdata-carousel-arrow{position:absolute;top:50%;z-index:5;width:44px;height:54px;border:2px solid #fff!important;border-radius:999px;background:var(--blue)!important;color:#fff!important;box-shadow:0 8px 22px rgba(0,62,145,.32);display:flex!important;align-items:center;justify-content:center;cursor:pointer;transform:translateY(-35%);transition:background .2s ease,color .2s ease,opacity .2s ease,transform .2s ease}\n.interdata-carousel-arrow:hover{background:var(--blue-dark)!important;color:#fff!important;transform:translateY(-35%) scale(1.04)}\n.interdata-carousel-arrow:disabled{opacity:.78;cursor:not-allowed;background:#8aa6cf!important;color:#fff!important}\n.interdata-carousel-arrow:disabled:hover{background:#8aa6cf!important;color:#fff!important;transform:translateY(-35%)}\n.interdata-carousel-arrow svg{display:none!important}\n.interdata-carousel-arrow:before{content:none!important;display:none!important}\n.interdata-carousel-mark{display:block!important;color:#fff!important;font-family:Arial,Helvetica,sans-serif!important;font-size:38px!important;font-weight:900!important;line-height:1!important;text-align:center!important;pointer-events:none!important;transform:translateY(-2px)}\n.interdata-carousel-prev{left:14px}\n.interdata-carousel-prev .interdata-carousel-mark{margin-left:-2px}\n.interdata-carousel-next{right:14px}\n.interdata-carousel-next .interdata-carousel-mark{margin-right:-2px}\n@media (max-width:800px){.interdata-plan-carousel{padding:12px 44px 16px}.interdata-plan-card{flex-basis:calc((100% - 12px)\/2)}.interdata-carousel-heading{font-size:16px}.interdata-carousel-prev{left:6px}.interdata-carousel-next{right:6px}}\n@media (max-width:480px){.interdata-plan-carousel{padding:12px 38px 16px}.interdata-plan-card{flex-basis:100%}.interdata-plan-price{font-size:23px}.interdata-carousel-arrow{width:34px;height:44px}.interdata-carousel-mark{font-size:32px!important}.interdata-carousel-prev{left:3px}.interdata-carousel-next{right:3px}}\n<\/style>\n\n<div class=\"interdata-plan-carousel\" data-interdata-carousel>\n  <div class=\"interdata-carousel-heading\">Si\u00eau \u01afu \u0110\u00e3i VPS \/ CLOUD SERVER - Ti\u1ebft Ki\u1ec7m \u0110\u1ebfn 70%<\/div>\n\n  <svg width=\"0\" height=\"0\" style=\"position:absolute;visibility:hidden\" aria-hidden=\"true\">\n    <symbol id=\"id-icon-cpu\" viewBox=\"0 0 24 24\"><rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\"><\/rect><path d=\"M4 9h3M4 15h3M17 9h3M17 15h3M9 4v3M15 4v3M9 17v3M15 17v3\"><\/path><path d=\"M10 10h4v4h-4z\"><\/path><\/symbol>\n    <symbol id=\"id-icon-ram\" viewBox=\"0 0 24 24\"><rect x=\"4\" y=\"8\" width=\"16\" height=\"8\" rx=\"2\"><\/rect><path d=\"M7 16v2M11 16v2M15 16v2M19 16v2M7 11h1M11 11h1M15 11h1\"><\/path><\/symbol>\n    <symbol id=\"id-icon-storage\" viewBox=\"0 0 24 24\"><rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"2\"><\/rect><path d=\"M9 7h6\"><\/path><circle cx=\"12\" cy=\"16\" r=\"1.5\"><\/circle><\/symbol>\n    <symbol id=\"id-icon-network\" viewBox=\"0 0 24 24\"><path d=\"M5 12.5a10 10 0 0 1 14 0\"><\/path><path d=\"M8.5 16a5 5 0 0 1 7 0\"><\/path><path d=\"M12 19h.01\"><\/path><\/symbol>\n    <symbol id=\"id-icon-gift\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"8\" width=\"18\" height=\"13\" rx=\"2\"><\/rect><path d=\"M12 8v13M3 12h18\"><\/path><path d=\"M7.5 8C6.1 8 5 6.9 5 5.5S6.1 3 7.5 3C10 3 12 8 12 8\"><\/path><path d=\"M16.5 8C17.9 8 19 6.9 19 5.5S17.9 3 16.5 3C14 3 12 8 12 8\"><\/path><\/symbol>\n  <\/svg>\n\n  <button class=\"interdata-carousel-arrow interdata-carousel-prev\" type=\"button\" aria-label=\"Xem 3 g\u00f3i tr\u01b0\u1edbc\" onclick=\"var r=this.closest('[data-interdata-carousel]');if(!r)return false;var t=r.querySelector('.interdata-plan-track'),c=t?t.querySelectorAll('.interdata-plan-card'):[];if(!t||!c.length)return false;var v=window.matchMedia('(max-width:480px)').matches?1:(window.matchMedia('(max-width:800px)').matches?2:3),m=Math.max(0,c.length-Math.min(v,c.length||1)),s=[],i=0;while(i&lt;m){s.push(i);i+=v}if(!s.length||s[s.length-1]!==m)s.push(m);var p=parseInt(r.getAttribute('data-inline-page')||'0',10);p=(p-1+s.length)%s.length;r.setAttribute('data-inline-page',p);var g=parseFloat(window.getComputedStyle(t).gap)||12,w=c[0].getBoundingClientRect().width;t.style.transition='transform .45s ease';t.style.transform='translate3d('+(-(w+g)*s[p])+'px,0,0)';return false;\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M15 18l-6-6 6-6\"><\/path><\/svg>\n    <span class=\"interdata-carousel-mark\" aria-hidden=\"true\">&#8249;<\/span>\n  <\/button>\n\n  <div class=\"interdata-plan-viewport\">\n    <div class=\"interdata-plan-track\">\n      <!-- 7 card d\u1ef1 ph\u00f2ng: JavaScript s\u1ebd \u0111\u1ed3ng b\u1ed9 l\u1ea1i t\u1eeb API portal khi trang t\u1ea3i. -->\n      <article class=\"interdata-plan-card\" data-plan-pid=\"490\">\n        <h3 class=\"interdata-plan-title\">Premium Base<\/h3>\n        <div class=\"interdata-plan-price\">299.000 \u0111<span>\/3 th\u00e1ng<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore Intel Xeon Scalable<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>2 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-value-plans-2026\/best-value-plans-premium-base\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"529\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 1<\/h3>\n        <div class=\"interdata-plan-price\">998.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-1\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"530\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 2<\/h3>\n        <div class=\"interdata-plan-price\">2.666.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>5 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>70 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-2\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"531\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 3<\/h3>\n        <div class=\"interdata-plan-price\">5.888.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>9 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>16 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>140 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-3\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"521\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 1<\/h3>\n        <div class=\"interdata-plan-price\">988.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>3 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-1\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"522\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 2<\/h3>\n        <div class=\"interdata-plan-price\">2.988.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>4 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>80 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300 Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-2\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"523\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 3<\/h3>\n        <div class=\"interdata-plan-price\">5.999.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>8 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>16 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>140 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>400 Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-3\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n    <\/div>\n  <\/div>\n\n  <button class=\"interdata-carousel-arrow interdata-carousel-next\" type=\"button\" aria-label=\"Xem 3 g\u00f3i ti\u1ebfp theo\" onclick=\"var r=this.closest('[data-interdata-carousel]');if(!r)return false;var t=r.querySelector('.interdata-plan-track'),c=t?t.querySelectorAll('.interdata-plan-card'):[];if(!t||!c.length)return false;var v=window.matchMedia('(max-width:480px)').matches?1:(window.matchMedia('(max-width:800px)').matches?2:3),m=Math.max(0,c.length-Math.min(v,c.length||1)),s=[],i=0;while(i&lt;m){s.push(i);i+=v}if(!s.length||s[s.length-1]!==m)s.push(m);var p=parseInt(r.getAttribute('data-inline-page')||'0',10);p=(p+1)%s.length;r.setAttribute('data-inline-page',p);var g=parseFloat(window.getComputedStyle(t).gap)||12,w=c[0].getBoundingClientRect().width;t.style.transition='transform .45s ease';t.style.transform='translate3d('+(-(w+g)*s[p])+'px,0,0)';return false;\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 18l6-6-6-6\"><\/path><\/svg>\n    <span class=\"interdata-carousel-mark\" aria-hidden=\"true\">&#8250;<\/span>\n  <\/button>\n<\/div>\n\n<script>\n(function(){\n  var API_GROUPS=[\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=89&module',pids:[490]},\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=100&module',pids:[529,530,531]},\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=97&module',pids:[521,522,523]}\n  ];\n  var PLAN_CYCLES={\n    490:{key:'quarterly',label:'3 th\u00e1ng'},\n    529:{key:'annually',label:'n\u0103m'},\n    530:{key:'annually',label:'n\u0103m'},\n    531:{key:'annually',label:'n\u0103m'},\n    521:{key:'annually',label:'n\u0103m'},\n    522:{key:'annually',label:'n\u0103m'},\n    523:{key:'annually',label:'n\u0103m'}\n  };\n\n  function fetchPlanData(){\n    if(window.interdataPlanApiPromise)return window.interdataPlanApiPromise;\n\n    window.interdataPlanApiPromise=Promise.all(API_GROUPS.map(function(group){\n      return fetch(group.url,{method:'GET',mode:'cors',cache:'no-store'})\n        .then(function(response){\n          if(!response.ok)throw new Error('API '+response.status);\n          return response.json();\n        })\n        .then(function(data){\n          if(!data||data.success!==true||!Array.isArray(data.products))return [];\n          return data.products.filter(function(product){\n            return group.pids.indexOf(Number(product.pid))!==-1;\n          });\n        })\n        .catch(function(error){\n          console.warn('Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt nh\u00f3m g\u00f3i InterData:',group.url,error);\n          return [];\n        });\n    })).then(function(groups){\n      return groups.reduce(function(all,products){return all.concat(products);},[]);\n    });\n\n    return window.interdataPlanApiPromise;\n  }\n\n  function parseDescription(html){\n    var source=String(html||'')\n      .replace(\/<brs*\/?>\/gi,'n')\n      .replace(\/<\/(p|div|li)>\/gi,'n');\n    var holder=document.createElement('div');\n    holder.innerHTML=source;\n    var strong=holder.querySelector('strong');\n    var badge=strong?strong.textContent.trim():'';\n    var lines=(holder.textContent||'').split(\/r?n\/).map(function(line){\n      return line.trim();\n    }).filter(Boolean);\n    if(badge&&lines[0]===badge)lines.shift();\n    return {badge:badge,features:lines};\n  }\n\n  function iconForFeature(feature){\n    if(\/ram\/i.test(feature))return 'id-icon-ram';\n    if(\/ssd|nvme|storage|disk\/i.test(feature))return 'id-icon-storage';\n    if(\/vcore|vcpu|cpu|xeon|amd\/i.test(feature))return 'id-icon-cpu';\n    if(\/ipv4|network|mbps|gbps|bandwidth\/i.test(feature))return 'id-icon-network';\n    return 'id-icon-gift';\n  }\n\n  function createFeatureItem(feature){\n    var item=document.createElement('li');\n    var icon=document.createElement('span');\n    var svg=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','svg');\n    var use=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','use');\n    icon.className='interdata-plan-icon';\n    use.setAttribute('href','#'+iconForFeature(feature));\n    svg.appendChild(use);\n    icon.appendChild(svg);\n    item.appendChild(icon);\n    item.appendChild(document.createTextNode(feature));\n    return item;\n  }\n\n  function updateCardFromApi(root,product){\n    var pid=Number(product.pid);\n    var cycle=PLAN_CYCLES[pid];\n    var card=root.querySelector('[data-plan-pid=\"'+pid+'\"]');\n    if(!card||!cycle)return;\n\n    var title=card.querySelector('.interdata-plan-title');\n    var priceBox=card.querySelector('.interdata-plan-price');\n    var badgeBox=card.querySelector('.interdata-plan-badge');\n    var featureList=card.querySelector('.interdata-plan-features');\n    var button=card.querySelector('.interdata-plan-button');\n    var description=parseDescription(product.description);\n    var pricing=product.pricing&&product.pricing.VND;\n    var price=pricing?Number(pricing[cycle.key]):-1;\n\n    if(title&&product.name)title.textContent=product.name;\n    if(priceBox&&Number.isFinite(price)&&price>=0){\n      priceBox.textContent=Math.round(price).toLocaleString('vi-VN')+' \u0111';\n      var suffix=document.createElement('span');\n      suffix.textContent='\/'+cycle.label;\n      priceBox.appendChild(suffix);\n    }\n    if(badgeBox&&description.badge)badgeBox.textContent=description.badge;\n    if(featureList&&description.features.length){\n      featureList.textContent='';\n      description.features.forEach(function(feature){\n        featureList.appendChild(createFeatureItem(feature));\n      });\n    }\n    if(button&&product.product_url)button.href=product.product_url;\n  }\n\n  function setupInterDataCarousel(root){\n    var track=root.querySelector('.interdata-plan-track');\n    var prev=root.querySelector('.interdata-carousel-prev');\n    var next=root.querySelector('.interdata-carousel-next');\n    if(!track||!prev||!next||track.dataset.ready==='1')return;\n    track.dataset.ready='1';\n    prev.disabled=false;\n    next.disabled=false;\n    var activePage=0;\n    var touchStartX=null;\n\n    function visibleCards(){\n      if(window.matchMedia&&window.matchMedia('(max-width:480px)').matches)return 1;\n      if(window.matchMedia&&window.matchMedia('(max-width:800px)').matches)return 2;\n      return 3;\n    }\n\n    function pageStarts(){\n      var total=track.querySelectorAll('.interdata-plan-card').length;\n      var visible=Math.min(visibleCards(),total||1);\n      var maxStart=Math.max(0,total-visible);\n      var starts=[];\n      var start=0;\n      while(start<maxStart){\n        starts.push(start);\n        start+=visible;\n      }\n      if(!starts.length||starts[starts.length-1]!==maxStart)starts.push(maxStart);\n      return starts;\n    }\n\n    function renderSlide(animate){\n      var cards=track.querySelectorAll('.interdata-plan-card');\n      var starts=pageStarts();\n      if(!cards.length||!starts.length)return;\n      if(activePage>=starts.length)activePage=starts.length-1;\n      if(activePage<0)activePage=0;\n\n      var cardWidth=cards[0].getBoundingClientRect().width;\n      var trackStyle=window.getComputedStyle?window.getComputedStyle(track):null;\n      var gap=trackStyle?parseFloat(trackStyle.columnGap||trackStyle.gap):12;\n      if(!Number.isFinite(gap))gap=12;\n      if(cardWidth<=0)return;\n\n      track.style.transition=animate?'transform .45s ease':'none';\n      track.style.transform='translate3d('+(-(cardWidth+gap)*starts[activePage])+'px,0,0)';\n      prev.setAttribute('aria-disabled',starts.length>1?'false':'true');\n      next.setAttribute('aria-disabled',starts.length>1?'false':'true');\n    }\n\n    function move(direction){\n      var starts=pageStarts();\n      if(starts.length<=1)return;\n      activePage=parseInt(root.getAttribute('data-inline-page')||activePage,10)||0;\n      activePage=(activePage+direction+starts.length)%starts.length;\n      root.setAttribute('data-inline-page',activePage);\n      renderSlide(true);\n    }\n\n    track.addEventListener('touchstart',function(event){\n      touchStartX=event.touches&&event.touches[0]?event.touches[0].clientX:null;\n    },{passive:true});\n    track.addEventListener('touchend',function(event){\n      if(touchStartX===null)return;\n      var endX=event.changedTouches&&event.changedTouches[0]?event.changedTouches[0].clientX:touchStartX;\n      var distance=endX-touchStartX;\n      touchStartX=null;\n      if(Math.abs(distance)>=40)move(distance<0?1:-1);\n    },{passive:true});\n\n    function resetAfterResize(){\n      activePage=0;\n      root.setAttribute('data-inline-page','0');\n      renderSlide(false);\n    }\n\n    window.addEventListener('resize',resetAfterResize);\n    window.addEventListener('load',resetAfterResize);\n    if('ResizeObserver' in window){\n      var resizeObserver=new ResizeObserver(function(){renderSlide(false);});\n      resizeObserver.observe(root);\n    }\n    window.requestAnimationFrame(function(){renderSlide(false);});\n    window.setTimeout(function(){renderSlide(false);},250);\n    window.setTimeout(function(){renderSlide(false);},1000);\n\n    fetchPlanData().then(function(products){\n      products.forEach(function(product){updateCardFromApi(root,product);});\n      renderSlide(false);\n    });\n  }\n\n  function initInterDataCarousels(){\n    document.querySelectorAll('[data-interdata-carousel]').forEach(setupInterDataCarousel);\n  }\n\n  if(document.readyState==='loading'){\n    document.addEventListener('DOMContentLoaded',initInterDataCarousels);\n  }else{\n    initInterDataCarousels();\n  }\n\n  if('MutationObserver' in window){\n    var initQueued=false;\n    new MutationObserver(function(){\n      if(initQueued)return;\n      initQueued=true;\n      window.requestAnimationFrame(function(){\n        initQueued=false;\n        initInterDataCarousels();\n      });\n    }).observe(document.documentElement,{childList:true,subtree:true});\n  }\n})();\n<\/script>\n\n\t<div id=\"gap-1295544780\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-1295544780 {\n  padding-top: 15px;\n}\n<\/style>\n\t<\/div>\n\t\n<h2 id=\"section1\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">Docker Compose L\u00e0 G\u00ec? Ph\u00e2n Bi\u1ec7t docker-compose (V1) V\u00e0 docker compose (V2)<\/h2>\n<p style=\"text-align: justify;\">Docker Compose l\u00e0 c\u00f4ng c\u1ee5 \u0111\u1ecbnh ngh\u0129a v\u00e0 ch\u1ea1y nhi\u1ec1u container c\u00f9ng l\u00fac b\u1eb1ng m\u1ed9t file YAML duy nh\u1ea5t, thay v\u00ec g\u00f5 t\u1eebng l\u1ec7nh <code>docker run<\/code> ri\u00eang l\u1ebb. N\u00f3 d\u1ef1a tr\u00ean <a href=\"https:\/\/interdata.vn\/blog\/docker-la-gi\/\">c\u00e1ch Docker \u0111\u00f3ng g\u00f3i \u1ee9ng d\u1ee5ng th\u00e0nh container<\/a>, ch\u1ec9 kh\u00e1c l\u00e0 qu\u1ea3n l\u00fd theo nh\u00f3m d\u1ecbch v\u1ee5 li\u00ean k\u1ebft v\u1edbi nhau nh\u01b0 web app v\u00e0 database.<\/p>\n<p style=\"text-align: justify;\">C\u00f3 hai phi\u00ean b\u1ea3n, v\u00e0 nh\u1ea7m l\u1eabn gi\u1eefa hai th\u1ee9 n\u00e0y l\u00e0 nguy\u00ean nh\u00e2n ph\u1ed5 bi\u1ebfn nh\u1ea5t g\u00e2y l\u1ed7i khi l\u00e0m theo h\u01b0\u1edbng d\u1eabn c\u0169:<\/p>\n<ul>\n<li><strong>Compose V1<\/strong> l\u00e0 c\u00f4ng c\u1ee5 standalone vi\u1ebft b\u1eb1ng Python, g\u1ecdi b\u1eb1ng l\u1ec7nh c\u00f3 g\u1ea1ch ngang <code>docker-compose<\/code>. Docker \u0111\u00e3 ng\u1eebng ph\u00e1t tri\u1ec3n V1 t\u1eeb th\u00e1ng 7\/2023, kh\u00f4ng c\u00f2n nh\u1eadn b\u1ea3n v\u00e1.<\/li>\n<li><strong>Compose V2<\/strong> l\u00e0 plugin vi\u1ebft b\u1eb1ng Go, t\u00edch h\u1ee3p th\u1eb3ng v\u00e0o Docker CLI, g\u1ecdi b\u1eb1ng l\u1ec7nh <strong>kh\u00f4ng g\u1ea1ch ngang<\/strong> <code>docker compose<\/code>. \u0110\u00e2y l\u00e0 b\u1ea3n \u0111\u01b0\u1ee3c Docker khuy\u1ebfn ngh\u1ecb ch\u00ednh th\u1ee9c v\u00e0 l\u00e0 b\u1ea3n b\u00e0i n\u00e0y h\u01b0\u1edbng d\u1eabn c\u00e0i.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">N\u1ebfu m\u00e1y b\u1ea1n c\u00e0i Docker Engine b\u1ea3n m\u1edbi theo repo ch\u00ednh th\u1ee9c m\u00e0 v\u1eabn g\u00f5 <code>docker-compose<\/code> theo th\u00f3i quen t\u1eeb t\u00e0i li\u1ec7u c\u0169, b\u1ea1n s\u1ebd g\u1eb7p ngay l\u1ed7i command not found &#8211; v\u00ec V1 kh\u00f4ng t\u1ef1 c\u00f3 s\u1eb5n, ph\u1ea3i c\u00e0i t\u00e1ch ri\u00eang v\u00e0 kh\u00f4ng c\u00f2n \u0111\u01b0\u1ee3c khuy\u1ebfn kh\u00edch d\u00f9ng cho m\u00e1y m\u1edbi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43472\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Docker-Compose.jpg\" alt=\"Docker Compose\" width=\"700\" height=\"467\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Docker-Compose.jpg 1050w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Docker-Compose-300x200.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Docker-Compose-1024x684.jpg 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Docker-Compose-768x513.jpg 768w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/p>\n<h2 id=\"section2\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">\u0110i\u1ec1u Ki\u1ec7n C\u1ea7n Tr\u01b0\u1edbc Khi C\u00e0i Docker Compose Tr\u00ean Ubuntu<\/h2>\n<p style=\"text-align: justify;\">Tr\u01b0\u1edbc khi ch\u1ea1y b\u1ea5t k\u1ef3 l\u1ec7nh c\u00e0i \u0111\u1eb7t n\u00e0o, c\u1ea7n ch\u1eafc ch\u1eafn b\u1ed1n \u0111i\u1ec1u sau, v\u00ec thi\u1ebfu m\u1ed9t trong s\u1ed1 \u0111\u00f3 l\u00e0 ngu\u1ed3n g\u1ed1c ph\u1ea7n l\u1edbn l\u1ed7i c\u00e0i \u0111\u1eb7t v\u1ec1 sau:<\/p>\n<ul>\n<li>M\u1ed9t m\u00e1y ch\u1ee7 ch\u1ea1y Ubuntu LTS \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3: 20.04 (Focal), 22.04 (Jammy) ho\u1eb7c 24.04 (Noble). Ba b\u1ea3n n\u00e0y d\u00f9ng chung m\u1ed9t quy tr\u00ecnh c\u00e0i, kh\u00e1c nhau \u1edf t\u00ean codename m\u00e0 script t\u1ef1 nh\u1eadn di\u1ec7n.<\/li>\n<li>Quy\u1ec1n root ho\u1eb7c t\u00e0i kho\u1ea3n c\u00f3 <code>sudo<\/code>. \u0110\u00e2y l\u00e0 l\u00fd do <a href=\"https:\/\/interdata.vn\/blog\/vps-la-gi\/\">VPS ph\u00f9 h\u1ee3p \u0111\u1ec3 t\u1ef1 tri\u1ec3n khai container<\/a> h\u01a1n Shared Hosting &#8211; Shared Hosting kh\u00f4ng c\u1ea5p quy\u1ec1n root n\u00ean kh\u00f4ng th\u1ec3 c\u00e0i Docker Engine hay Docker Compose.<\/li>\n<li>\u0110\u00e3 k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c v\u00e0o m\u00e1y ch\u1ee7, th\u01b0\u1eddng qua <a href=\"https:\/\/interdata.vn\/blog\/cach-truy-cap-vps-linux-bang-ssh\/\">SSH v\u00e0o VPS Linux<\/a> b\u1eb1ng terminal ho\u1eb7c PuTTY.<\/li>\n<li>Docker Engine \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i. Docker Compose Plugin ph\u1ee5 thu\u1ed9c v\u00e0o Docker Engine, kh\u00f4ng ch\u1ea1y \u0111\u1ed9c l\u1eadp. N\u1ebfu ch\u01b0a c\u00f3, l\u00e0m theo <a href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-docker-tren-vps\/\">h\u01b0\u1edbng d\u1eabn c\u00e0i Docker Engine tr\u00ean VPS Ubuntu\/Debian<\/a> tr\u01b0\u1edbc, sau \u0111\u00f3 quay l\u1ea1i ph\u1ea7n d\u01b0\u1edbi.<\/li>\n<\/ul>\n<pre><code>docker --version\r\nlsb_release -a<\/code><\/pre>\n<p style=\"font-size: 14px; color: #4b5563;\">L\u1ec7nh \u0111\u1ea7u ki\u1ec3m tra Docker Engine \u0111\u00e3 c\u00e0i ch\u01b0a, l\u1ec7nh sau x\u00e1c nh\u1eadn \u0111\u00fang b\u1ea3n Ubuntu LTS \u0111ang d\u00f9ng.<\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: #fff; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0;\">Thu\u00ea VPS InterData<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">To\u00e0n quy\u1ec1n root, c\u00e0i Docker Compose ngay sau khi nh\u1eadn VPS<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">C\u1ea7n VPS Hi\u1ec7u N\u0103ng Cao To\u00e0n Quy\u1ec1n Qu\u1ea3n Tr\u1ecb?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">C\u00e1c b\u01b0\u1edbc c\u00e0i \u0111\u1eb7t ph\u00eda d\u01b0\u1edbi \u0111\u1ec1u c\u1ea7n ch\u1ea1y l\u1ec7nh <code>sudo<\/code> v\u00e0 c\u1ea5u h\u00ecnh repo h\u1ec7 th\u1ed1ng &#8211; vi\u1ec7c ch\u1ec9 th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c tr\u00ean VPS ho\u1eb7c Cloud Server, kh\u00f4ng th\u1ec3 l\u00e0m tr\u00ean Shared Hosting. VPS InterData c\u1ea5p quy\u1ec1n root \u0111\u1ea7y \u0111\u1ee7, CPU th\u1ebf h\u1ec7 m\u1edbi v\u00e0 SSD NVMe \u0111\u1ec3 b\u1ea1n c\u00e0i v\u00e0 ch\u1ea1y th\u1eed ngay.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: #fff; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block;\" href=\"https:\/\/interdata.vn\/thue-vps\/\" target=\"_blank\" rel=\"noopener\">Xem C\u00e1c G\u00f3i VPS Gi\u00e1 R\u1ebb \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<h2 id=\"section3\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t Docker Compose Tr\u00ean Ubuntu 20.04\/22.04\/24.04 T\u1eebng B\u01b0\u1edbc<\/h2>\n<p style=\"text-align: justify;\">Quy tr\u00ecnh d\u01b0\u1edbi \u0111\u00e2y c\u00e0i Compose V2 qua repo APT ch\u00ednh th\u1ee9c c\u1ee7a Docker &#8211; c\u00e1ch \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb v\u00ec t\u1ef1 nh\u1eadn b\u1ea3n v\u00e1 c\u00f9ng Docker Engine, kh\u00f4ng ph\u1ea3i t\u1ea3i binary th\u1ee7 c\u00f4ng. \u00c1p d\u1ee5ng nh\u01b0 nhau cho c\u1ea3 ba b\u1ea3n Ubuntu LTS.<\/p>\n<p><strong>1\/ G\u1ee1 c\u00e1c b\u1ea3n Docker\/Compose c\u0169 n\u1ebfu t\u1eebng c\u00e0i qua k\u00eanh kh\u00f4ng ch\u00ednh th\u1ee9c<\/strong>, tr\u00e1nh xung \u0111\u1ed9t g\u00f3i.<\/p>\n<pre><code>sudo apt remove docker docker-engine docker.io containerd runc docker-compose<\/code><\/pre>\n<p><strong>2\/ C\u1eadp nh\u1eadt danh s\u00e1ch g\u00f3i v\u00e0 c\u00e0i c\u00e1c g\u00f3i c\u1ea7n thi\u1ebft \u0111\u1ec3 th\u00eam repo qua HTTPS<\/strong>.<\/p>\n<pre><code>sudo apt update\r\nsudo apt install ca-certificates curl gnupg<\/code><\/pre>\n<p><strong>3\/ Th\u00eam GPG key ch\u00ednh th\u1ee9c c\u1ee7a Docker<\/strong>, d\u00f9ng \u0111\u1ec3 x\u00e1c th\u1ef1c g\u00f3i khi c\u00e0i qua APT.<\/p>\n<pre><code>sudo install -m 0755 -d \/etc\/apt\/keyrings\r\ncurl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg\r\nsudo chmod a+r \/etc\/apt\/keyrings\/docker.gpg<\/code><\/pre>\n<p><strong>4\/ Th\u00eam repository Docker v\u00e0o ngu\u1ed3n c\u00e0i \u0111\u1eb7t c\u1ee7a Ubuntu<\/strong>. L\u1ec7nh t\u1ef1 nh\u1eadn \u0111\u00fang codename (focal\/jammy\/noble) theo b\u1ea3n Ubuntu \u0111ang ch\u1ea1y.<\/p>\n<pre><code>echo \\\r\n  \"deb [arch=$(dpkg --print-architecture) signed-by=\/etc\/apt\/keyrings\/docker.gpg] https:\/\/download.docker.com\/linux\/ubuntu \\\r\n  $(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\") stable\" | \\\r\n  sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null<\/code><\/pre>\n<p><strong>5\/ C\u00e0i Docker Engine c\u00f9ng Compose Plugin<\/strong> trong m\u1ed9t l\u1ec7nh.<\/p>\n<pre><code>sudo apt update\r\nsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/pre>\n<p><strong>6\/ Ki\u1ec3m tra Compose Plugin \u0111\u00e3 nh\u1eadn di\u1ec7n \u0111\u00fang ch\u01b0a.<\/strong> \u0110\u00e2y l\u00e0 b\u01b0\u1edbc ki\u1ec3m tra b\u1eaft bu\u1ed9c tr\u01b0\u1edbc khi \u0111i ti\u1ebfp &#8211; n\u1ebfu l\u1ec7nh n\u00e0y b\u00e1o l\u1ed7i, quay l\u1ea1i b\u01b0\u1edbc 5.<\/p>\n<pre><code>docker compose version<\/code><\/pre>\n<p style=\"font-size: 14px; color: #4b5563; margin-top: 8px;\">K\u1ebft qu\u1ea3 \u0111\u00fang d\u1ea1ng &#8220;Docker Compose version vX.X.X&#8221; nh\u01b0 \u1ea3nh minh h\u1ecda. N\u1ebfu b\u00e1o &#8220;docker: &#8216;compose&#8217; is not a docker command&#8221;, g\u00f3i docker-compose-plugin ch\u01b0a c\u00e0i th\u00e0nh c\u00f4ng.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43475\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-docker-compose-version.png\" alt=\"Ki\u1ec3m tra docker compose version\" width=\"400\" height=\"125\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-docker-compose-version.png 407w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-docker-compose-version-300x94.png 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/p>\n<p><strong>7\/ Th\u00eam user hi\u1ec7n t\u1ea1i v\u00e0o group docker<\/strong> \u0111\u1ec3 kh\u00f4ng ph\u1ea3i g\u00f5 <code>sudo<\/code> tr\u01b0\u1edbc m\u1ecdi l\u1ec7nh docker.<\/p>\n<pre><code>sudo usermod -aG docker $USER\r\nnewgrp docker<\/code><\/pre>\n<p style=\"font-size: 14px; color: #4b5563; margin-top: 8px;\">N\u1ebfu <code>newgrp<\/code> kh\u00f4ng c\u00f3 t\u00e1c d\u1ee5ng ngay, logout r\u1ed3i SSH l\u1ea1i v\u00e0o VPS \u0111\u1ec3 nh\u1eadn quy\u1ec1n group m\u1edbi.<\/p>\n<p><strong>8\/ Ch\u1ea1y th\u1eed container \u0111\u1ea7u ti\u00ean \u0111\u1ec3 x\u00e1c nh\u1eadn to\u00e0n b\u1ed9 chu\u1ed7i c\u00e0i \u0111\u1eb7t ho\u1ea1t \u0111\u1ed9ng.<\/strong><\/p>\n<pre><code>docker run hello-world<\/code><\/pre>\n<p style=\"font-size: 14px; color: #4b5563; margin-top: 8px;\">Th\u1ea5y d\u00f2ng &#8220;Hello from Docker!&#8221; ngh\u0129a l\u00e0 Docker Engine v\u00e0 Compose Plugin \u0111\u00e3 s\u1eb5n s\u00e0ng d\u00f9ng th\u1eadt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43474\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chay-thu-container.png\" alt=\"Ch\u1ea1y th\u1eed container\" width=\"700\" height=\"599\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chay-thu-container.png 756w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chay-thu-container-300x257.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/p>\n<p style=\"text-align: justify;\">Mu\u1ed1n g\u1ee1 ch\u1ec9 ri\u00eang Compose Plugin m\u00e0 gi\u1eef Docker Engine, d\u00f9ng <code>sudo apt remove docker-compose-plugin<\/code>. Tr\u01b0\u1eddng h\u1ee3p m\u00e1y kh\u00f4ng truy c\u1eadp \u0111\u01b0\u1ee3c repo APT c\u1ee7a Docker (m\u1ea1ng n\u1ed9i b\u1ed9 h\u1ea1n ch\u1ebf), c\u00f3 th\u1ec3 t\u1ea3i tr\u1ef1c ti\u1ebfp binary Compose V2 t\u1eeb GitHub Releases c\u1ee7a Docker v\u00e0 \u0111\u1eb7t v\u00e0o <code>~\/.docker\/cli-plugins\/docker-compose<\/code>, sau \u0111\u00f3 <code>chmod +x<\/code> &#8211; c\u00e1ch n\u00e0y \u00edt g\u1eb7p h\u01a1n v\u00e0 n\u00ean \u01b0u ti\u00ean c\u00e1ch qua APT \u1edf tr\u00ean.<\/p>\n<div style=\"background: linear-gradient(135deg, #EFF6FF 0%, #DBEAFE 100%); border: 1.5px solid #2563EB; border-radius: 12px; padding: 28px; margin: 35px 0; text-align: center;\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-size: 22px; font-weight: bold; color: #1e3a8a; margin: 0 0 8px;\">S\u0103n Hot Deals VPS &amp; Cloud Server Ti\u1ebft Ki\u1ec7m<\/p>\n<p style=\"font-size: 15px; color: #4b5563; margin-bottom: 20px;\">Canh Me t\u1ed5ng h\u1ee3p khuy\u1ebfn m\u00e3i, hot deals VPS &amp; Cloud Server m\u1edbi nh\u1ea5t c\u1ee7a InterData &#8211; xem tr\u01b0\u1edbc khi ch\u1ecdn g\u00f3i \u0111\u1ec3 ti\u1ebft ki\u1ec7m chi ph\u00ed tri\u1ec3n khai.<\/p>\n<p><a style=\"background: #2563EB; color: #fff; padding: 12px 30px; text-decoration: none; font-weight: 600; border-radius: 8px; display: inline-block;\" href=\"https:\/\/interdata.vn\/canhme\/\" target=\"_blank\" rel=\"noopener\">Xem \u01afu \u0110\u00e3i T\u1ea1i Canh Me \u27f6<\/a><\/p>\n<\/div>\n<h2 id=\"section4\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">X\u1eed L\u00fd L\u1ed7i Th\u01b0\u1eddng G\u1eb7p Khi C\u00e0i V\u00e0 D\u00f9ng Docker Compose<\/h2>\n<p style=\"text-align: justify;\">Ph\u1ea7n l\u1edbn l\u1ed7i khi m\u1edbi c\u00e0i Docker Compose r\u01a1i v\u00e0o n\u0103m d\u1ea1ng sau. Tra \u0111\u00fang th\u00f4ng b\u00e1o l\u1ed7i \u0111\u1ec3 x\u1eed l\u00fd nhanh thay v\u00ec c\u00e0i l\u1ea1i t\u1eeb \u0111\u1ea7u.<\/p>\n<div style=\"overflow-x: auto;\">\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 10px; text-align: left; border: 1px solid #BFDBFE;\">Th\u00f4ng b\u00e1o l\u1ed7i<\/th>\n<th style=\"padding: 10px; text-align: left; border: 1px solid #BFDBFE;\">Nguy\u00ean nh\u00e2n<\/th>\n<th style=\"padding: 10px; text-align: left; border: 1px solid #BFDBFE;\">C\u00e1ch x\u1eed l\u00fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">docker-compose: command not found<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">M\u00e1y ch\u1ec9 c\u00f3 Compose V2 nh\u01b0ng g\u00f5 l\u1ec7nh V1 c\u00f3 g\u1ea1ch ngang<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">\u0110\u1ed5i sang <code>docker compose<\/code> (kh\u00f4ng g\u1ea1ch ngang), ho\u1eb7c c\u00e0i <code>docker-compose-plugin<\/code> n\u1ebfu ch\u01b0a c\u00f3<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">permission denied while trying to connect to the Docker daemon socket<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">User hi\u1ec7n t\u1ea1i ch\u01b0a thu\u1ed9c group docker<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Ch\u1ea1y <code>sudo usermod -aG docker $USER<\/code> r\u1ed3i <code>newgrp docker<\/code> ho\u1eb7c logout\/login l\u1ea1i<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Cannot connect to the Docker daemon at unix:\/\/\/var\/run\/docker.sock<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">D\u1ecbch v\u1ee5 Docker ch\u01b0a ch\u1ea1y ho\u1eb7c b\u1ecb d\u1eebng<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Ch\u1ea1y <code>sudo systemctl start docker<\/code> v\u00e0 <code>sudo systemctl enable docker<\/code> \u0111\u1ec3 t\u1ef1 kh\u1edfi \u0111\u1ed9ng c\u00f9ng h\u1ec7 th\u1ed1ng<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">docker: &#8216;compose&#8217; is not a docker command<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Ch\u01b0a c\u00e0i docker-compose-plugin, ho\u1eb7c c\u00e0i Docker qua k\u00eanh kh\u00f4ng ch\u00ednh th\u1ee9c thi\u1ebfu plugin n\u00e0y<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">C\u00e0i l\u1ea1i theo repo APT ch\u00ednh th\u1ee9c \u1edf m\u1ee5c c\u00e0i \u0111\u1eb7t, x\u00e1c nh\u1eadn b\u1eb1ng <code>docker compose version<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Bind for 0.0.0.0:xxxx failed: port is already allocated<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">C\u1ed5ng khai b\u00e1o trong docker-compose.yml \u0111ang b\u1ecb service kh\u00e1c ho\u1eb7c container kh\u00e1c chi\u1ebfm<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">\u0110\u1ed5i c\u1ed5ng map \u1edf ph\u1ea7n <code>ports<\/code>, ho\u1eb7c ch\u1ea1y <code>sudo lsof -i :xxxx<\/code> \u0111\u1ec3 t\u00ecm v\u00e0 d\u1eebng ti\u1ebfn tr\u00ecnh \u0111ang chi\u1ebfm<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p style=\"text-align: justify;\">Khi ch\u1ea1y Docker Compose l\u00e2u d\u00e0i tr\u00ean m\u00e1y ch\u1ee7 m\u1edf port ra ngo\u00e0i internet, n\u00ean k\u1ebft h\u1ee3p th\u00eam <a href=\"https:\/\/interdata.vn\/blog\/bao-mat-vps\/\">c\u00e1c c\u00e1ch b\u1ea3o m\u1eadt VPS khi ch\u1ea1y container<\/a> &#8211; \u0111\u00f3ng port kh\u00f4ng c\u1ea7n thi\u1ebft, gi\u1edbi h\u1ea1n quy\u1ec1n container &#8211; thay v\u00ec ch\u1ec9 x\u1eed l\u00fd l\u1ed7i ph\u00e1t sinh.<\/p>\n<h2 id=\"section5\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">C\u00e1ch S\u1eed D\u1ee5ng Docker Compose Sau Khi C\u00e0i \u0110\u1eb7t: Vi\u1ebft File docker-compose.yml<\/h2>\n<p style=\"text-align: justify;\">File <code>docker-compose.yml<\/code> l\u00e0 n\u01a1i khai b\u00e1o to\u00e0n b\u1ed9 service, image, bi\u1ebfn m\u00f4i tr\u01b0\u1eddng v\u00e0 volume c\u1ee7a \u1ee9ng d\u1ee5ng b\u1eb1ng c\u00fa ph\u00e1p YAML. V\u00ed d\u1ee5 d\u01b0\u1edbi \u0111\u00e2y d\u1ef1ng m\u1ed9t WordPress k\u1ebft n\u1ed1i MySQL &#8211; m\u00f4 h\u00ecnh web app + database ph\u1ed5 bi\u1ebfn nh\u1ea5t khi m\u1edbi h\u1ecdc Compose.<\/p>\n<pre><code>services:\r\n  web:\r\n    image: wordpress:latest\r\n    restart: unless-stopped\r\n    ports:\r\n      - \"8080:80\"\r\n    environment:\r\n      WORDPRESS_DB_HOST: db\r\n      WORDPRESS_DB_USER: wp_user\r\n      WORDPRESS_DB_PASSWORD: wp_password\r\n      WORDPRESS_DB_NAME: wordpress\r\n    volumes:\r\n      - wp_data:\/var\/www\/html\r\n    depends_on:\r\n      - db\r\n\r\n  db:\r\n    image: mysql:8.0\r\n    restart: unless-stopped\r\n    environment:\r\n      MYSQL_DATABASE: wordpress\r\n      MYSQL_USER: wp_user\r\n      MYSQL_PASSWORD: wp_password\r\n      MYSQL_ROOT_PASSWORD: root_password\r\n    volumes:\r\n      - db_data:\/var\/lib\/mysql\r\n\r\nvolumes:\r\n  wp_data:\r\n  db_data:<\/code><\/pre>\n<p style=\"font-size: 14px; color: #4b5563;\">T\u1eeb Compose V2, tr\u01b0\u1eddng <code>version:<\/code> \u1edf \u0111\u1ea7u file kh\u00f4ng c\u00f2n b\u1eaft bu\u1ed9c v\u00e0 c\u00f3 th\u1ec3 b\u1ecf qua &#8211; n\u1ebfu copy file c\u0169 c\u00f2n d\u00f2ng n\u00e0y, Compose v\u1eabn ch\u1ea1y nh\u01b0ng c\u00f3 th\u1ec3 hi\u1ec7n c\u1ea3nh b\u00e1o obsolete, kh\u00f4ng ph\u1ea3i l\u1ed7i nghi\u00eam tr\u1ecdng.<\/p>\n<p style=\"text-align: justify;\">\u0110\u1eb7t file n\u00e0y v\u00e0o m\u1ed9t th\u01b0 m\u1ee5c ri\u00eang tr\u00ean VPS, ch\u1ea1y <code>docker compose up -d<\/code> trong \u0111\u00fang th\u01b0 m\u1ee5c \u0111\u00f3, WordPress s\u1ebd ch\u1ea1y \u1edf c\u1ed5ng 8080 v\u00e0 t\u1ef1 k\u1ebft n\u1ed1i MySQL qua t\u00ean service <code>db<\/code> &#8211; Compose t\u1ef1 t\u1ea1o network n\u1ed9i b\u1ed9 gi\u1eefa c\u00e1c service c\u00f9ng file. Mu\u1ed1n expose ra domain th\u1eadt, \u0111\u1eb7t th\u00eam <a href=\"https:\/\/interdata.vn\/blog\/huong-dan-cai-dat-nginx-ubuntu-centos\/\">Nginx tr\u00ean Ubuntu l\u00e0m reverse proxy<\/a> ph\u00eda tr\u01b0\u1edbc container web. M\u1ed9t v\u00ed d\u1ee5 kh\u00e1c d\u00f9ng \u0111\u00fang m\u00f4 h\u00ecnh n\u00e0y l\u00e0 <a href=\"https:\/\/interdata.vn\/blog\/cai-dat-n8n-bang-docker\/\">tri\u1ec3n khai n8n b\u1eb1ng Docker tr\u00ean VPS<\/a>, c\u0169ng ch\u1ec9 m\u1ed9t file YAML v\u00e0 m\u1ed9t l\u1ec7nh up.<\/p>\n<h2 id=\"section6\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">C\u00e1c L\u1ec7nh Docker Compose C\u01a1 B\u1ea3n C\u1ea7n Nh\u1edb<\/h2>\n<p style=\"text-align: justify;\">To\u00e0n b\u1ed9 l\u1ec7nh d\u01b0\u1edbi \u0111\u00e2y ch\u1ea1y trong th\u01b0 m\u1ee5c ch\u1ee9a file <code>docker-compose.yml<\/code>, d\u00f9ng c\u00fa ph\u00e1p V2 <code>docker compose<\/code>.<\/p>\n<div style=\"overflow-x: auto;\">\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 10px; text-align: left; border: 1px solid #BFDBFE;\">L\u1ec7nh<\/th>\n<th style=\"padding: 10px; text-align: left; border: 1px solid #BFDBFE;\">Ch\u1ee9c n\u0103ng<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\"><code>docker compose up -d<\/code><\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Kh\u1edfi t\u1ea1o v\u00e0 ch\u1ea1y to\u00e0n b\u1ed9 service \u1edf ch\u1ebf \u0111\u1ed9 n\u1ec1n (detached)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\"><code>docker compose down<\/code><\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">D\u1eebng v\u00e0 x\u00f3a container, network do file n\u00e0y t\u1ea1o ra (gi\u1eef nguy\u00ean volume)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\"><code>docker compose ps<\/code><\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Xem tr\u1ea1ng th\u00e1i c\u00e1c container \u0111ang ch\u1ea1y trong project<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\"><code>docker compose logs -f<\/code><\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Theo d\u00f5i log realtime c\u1ee7a t\u1ea5t c\u1ea3 service, th\u00eam t\u00ean service \u0111\u1ec3 xem ri\u00eang<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\"><code>docker compose restart<\/code><\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Kh\u1edfi \u0111\u1ed9ng l\u1ea1i service sau khi s\u1eeda c\u1ea5u h\u00ecnh \u1ee9ng d\u1ee5ng<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\"><code>docker compose build<\/code><\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Build l\u1ea1i image t\u1eeb Dockerfile khi d\u00f9ng <code>build:<\/code> thay v\u00ec <code>image:<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\"><code>docker compose exec web bash<\/code><\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">M\u1edf shell b\u00ean trong container \u0111ang ch\u1ea1y \u0111\u1ec3 debug tr\u1ef1c ti\u1ebfp<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\"><code>docker compose pull<\/code><\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">K\u00e9o b\u1ea3n image m\u1edbi nh\u1ea5t c\u1ee7a c\u00e1c service v\u1ec1 tr\u01b0\u1edbc khi up l\u1ea1i<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 id=\"section7\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">Khi N\u00e0o Docker Compose Ch\u01b0a \u0110\u1ee7, C\u1ea7n Swarm Ho\u1eb7c Kubernetes?<\/h2>\n<p style=\"text-align: justify;\">Docker Compose ch\u1ea1y t\u1ed1t tr\u00ean m\u1ed9t m\u00e1y ch\u1ee7 duy nh\u1ea5t, nh\u01b0ng kh\u00f4ng t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n container sang m\u00e1y kh\u00e1c khi m\u00e1y hi\u1ec7n t\u1ea1i qu\u00e1 t\u1ea3i ho\u1eb7c g\u1eb7p s\u1ef1 c\u1ed1 &#8211; \u0111\u00f3 l\u00e0 gi\u1edbi h\u1ea1n c\u1ea7n bi\u1ebft tr\u01b0\u1edbc khi d\u1ed3n h\u1ebft production v\u00e0o m\u1ed9t file YAML.<\/p>\n<p style=\"text-align: justify;\">Khi \u1ee9ng d\u1ee5ng c\u1ea7n ch\u1ea1y tr\u00ean nhi\u1ec1u m\u00e1y ch\u1ee7, t\u1ef1 ph\u1ee5c h\u1ed3i khi container ch\u1ebft, ho\u1eb7c scale s\u1ed1 l\u01b0\u1ee3ng instance theo l\u01b0u l\u01b0\u1ee3ng th\u1ef1c t\u1ebf, \u0111\u00e2y l\u00e0 l\u00fac c\u1ea7n c\u00f4ng c\u1ee5 \u0111i\u1ec1u ph\u1ed1i multi-container \u1edf t\u1ea7ng cluster nh\u01b0 Docker Swarm ho\u1eb7c Kubernetes.<\/p>\n<p style=\"text-align: justify;\">Tr\u01b0\u1edbc khi chuy\u1ec3n h\u1eb3n sang h\u01b0\u1edbng \u0111\u00f3, tham kh\u1ea3o th\u00eam <a href=\"https:\/\/interdata.vn\/blog\/kubernetes-va-docker\/\">so s\u00e1nh Kubernetes v\u00e0 Docker khi c\u1ea7n scale l\u1edbn h\u01a1n Compose<\/a> \u0111\u1ec3 ch\u1ecdn \u0111\u00fang c\u00f4ng c\u1ee5 theo quy m\u00f4 th\u1eadt c\u1ee7a h\u1ec7 th\u1ed1ng, tr\u00e1nh \u0111\u1ea7u t\u01b0 h\u1ea1 t\u1ea7ng ph\u1ee9c t\u1ea1p h\u01a1n m\u1ee9c c\u1ea7n thi\u1ebft.<\/p>\n<h2 id=\"section8\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">N\u00ean Ch\u1ecdn VPS Hay Cloud Server \u0110\u1ec3 C\u00e0i \u0110\u1eb7t V\u00e0 S\u1eed D\u1ee5ng Docker Compose L\u00e2u D\u00e0i Tr\u00ean Ubuntu?<\/h2>\n<p style=\"text-align: justify;\">C\u1ea3 hai \u0111\u1ec1u c\u1ea5p quy\u1ec1n root \u0111\u1ec3 c\u00e0i Docker Compose b\u00ecnh th\u01b0\u1eddng, kh\u00e1c nhau \u1edf kh\u1ea3 n\u0103ng \u0111\u1ed5i t\u00e0i nguy\u00ean khi s\u1ed1 container t\u0103ng l\u00ean theo th\u1eddi gian.<\/p>\n<div style=\"overflow-x: auto;\">\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 10px; text-align: left; border: 1px solid #BFDBFE;\">Ti\u00eau ch\u00ed<\/th>\n<th style=\"padding: 10px; text-align: left; border: 1px solid #BFDBFE;\">VPS<\/th>\n<th style=\"padding: 10px; text-align: left; border: 1px solid #BFDBFE;\">Cloud Server<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Ph\u00f9 h\u1ee3p cho<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">H\u1ecdc v\u00e0 th\u1ef1c h\u00e0nh Compose, dev\/test, 1-2 container nh\u1ecf (web app + database, n8n, tool c\u00e1 nh\u00e2n)<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Ch\u1ea1y nhi\u1ec1u service c\u00f9ng l\u00fac \u1edf production, workload bi\u1ebfn \u0111\u1ed9ng theo th\u1eddi gian th\u1ef1c<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">N\u00e2ng\/h\u1ea1 t\u00e0i nguy\u00ean<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Th\u01b0\u1eddng c\u1ea7n \u0111\u1ed5i g\u00f3i ho\u1eb7c kh\u1edfi \u0111\u1ed9ng l\u1ea1i \u0111\u1ec3 n\u00e2ng c\u1ea5u h\u00ecnh<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">\u0110i\u1ec1u ch\u1ec9nh CPU\/RAM nhanh m\u00e0 kh\u00f4ng c\u1ea7n \u0111\u1ed5i m\u00e1y ch\u1ee7 v\u1eadt l\u00fd<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Chi ph\u00ed kh\u1edfi \u0111i\u1ec3m<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Th\u1ea5p, ph\u00f9 h\u1ee3p b\u1eaft \u0111\u1ea7u v\u00e0 th\u1eed nghi\u1ec7m<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Cao h\u01a1n t\u01b0\u01a1ng \u1ee9ng v\u1edbi t\u00e0i nguy\u00ean linh ho\u1ea1t h\u01a1n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Use case v\u1edbi Docker Compose<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">M\u1ed9t file docker-compose.yml, v\u00e0i service c\u1ed1 \u0111\u1ecbnh<\/td>\n<td style=\"padding: 10px; border: 1px solid #BFDBFE;\">Nhi\u1ec1u project Compose ch\u1ea1y song song, c\u1ea7n t\u00e1ch t\u00e0i nguy\u00ean theo t\u1eebng workload<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p style=\"text-align: justify;\">B\u1eaft \u0111\u1ea7u b\u1eb1ng VPS \u0111\u1ec3 l\u00e0m quen thao t\u00e1c c\u00e0i \u0111\u1eb7t v\u00e0 vi\u1ebft file Compose l\u00e0 h\u1ee3p l\u00fd v\u1ec1 chi ph\u00ed. Khi s\u1ed1 container t\u0103ng l\u00ean ho\u1eb7c \u1ee9ng d\u1ee5ng b\u1eaft \u0111\u1ea7u c\u00f3 traffic th\u1eadt c\u1ea7n t\u00e0i nguy\u00ean co gi\u00e3n, chuy\u1ec3n sang Cloud Server tr\u00e1nh ph\u1ea3i build l\u1ea1i to\u00e0n b\u1ed9 m\u00f4i tr\u01b0\u1eddng t\u1eeb \u0111\u1ea7u.<\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: #fff; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0;\">Cloud Server InterData<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">N\u00e2ng\/h\u1ea1 t\u00e0i nguy\u00ean nhanh khi ch\u1ea1y nhi\u1ec1u container<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">Docker Compose \u0111ang ch\u1ea1y nhi\u1ec1u service, t\u1ea3i t\u0103ng d\u1ea7n theo th\u1eddi gian?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">Khi m\u1ed9t VPS c\u1ed1 \u0111\u1ecbnh kh\u00f4ng c\u00f2n \u0111\u1ee7 CPU\/RAM cho to\u00e0n b\u1ed9 container, Cloud Server InterData cho ph\u00e9p n\u00e2ng c\u1ea5u h\u00ecnh theo nhu c\u1ea7u th\u1ef1c t\u1ebf m\u00e0 kh\u00f4ng ph\u1ea3i d\u1ef1ng l\u1ea1i m\u00f4i tr\u01b0\u1eddng Docker t\u1eeb \u0111\u1ea7u, v\u1eabn gi\u1eef quy\u1ec1n root v\u00e0 h\u1ed7 tr\u1ee3 k\u1ef9 thu\u1eadt 24\/7.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: #fff; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block;\" href=\"https:\/\/interdata.vn\/cloud-server\/\" target=\"_blank\" rel=\"noopener\">Xem c\u00e1c g\u00f3i Cloud Server \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<div id=\"section9\" style=\"border-top: 2px dashed #BFDBFE; margin-top: 50px; padding-top: 30px;\">\n<h2 style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; margin-bottom: 20px;\">C\u00e2u H\u1ecfi Th\u01b0\u1eddng G\u1eb7p V\u1ec1 Docker Compose Tr\u00ean Ubuntu<\/h2>\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 18px; margin-bottom: 8px;\">Docker Compose c\u00f3 c\u1ea7n c\u00e0i Docker tr\u01b0\u1edbc kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify; margin-bottom: 20px;\">C\u00f3. Docker Compose Plugin (V2) ch\u1ea1y d\u1ef1a tr\u00ean Docker Engine, kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng \u0111\u1ed9c l\u1eadp. N\u1ebfu ch\u01b0a c\u00f3 Docker Engine, l\u1ec7nh c\u00e0i Compose Plugin qua APT v\u1eabn ch\u1ea1y \u0111\u01b0\u1ee3c nh\u01b0ng <code>docker compose<\/code> s\u1ebd b\u00e1o l\u1ed7i k\u1ebft n\u1ed1i daemon khi th\u1ef1c thi.<\/p>\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 18px; margin-bottom: 8px;\">Ubuntu 24.04 c\u00f3 d\u00f9ng \u0111\u01b0\u1ee3c Docker Compose V1 kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify; margin-bottom: 20px;\">K\u1ef9 thu\u1eadt v\u1eabn c\u00e0i th\u1ee7 c\u00f4ng \u0111\u01b0\u1ee3c b\u1eb1ng c\u00e1ch t\u1ea3i binary standalone, nh\u01b0ng V1 \u0111\u00e3 ng\u1eebng c\u1eadp nh\u1eadt t\u1eeb 2023 n\u00ean kh\u00f4ng n\u00ean d\u00f9ng cho m\u00e1y m\u1edbi. Ubuntu 24.04 n\u00ean c\u00e0i th\u1eb3ng Compose V2 qua repo APT ch\u00ednh th\u1ee9c c\u1ee7a Docker.<\/p>\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 18px; margin-bottom: 8px;\">L\u00e0m sao ki\u1ec3m tra \u0111\u00e3 c\u00e0i Docker Compose ch\u01b0a?<\/h3>\n<p style=\"text-align: justify; margin-bottom: 20px;\">Ch\u1ea1y <code>docker compose version<\/code>. N\u1ebfu hi\u1ec7n s\u1ed1 phi\u00ean b\u1ea3n d\u1ea1ng &#8220;Docker Compose version v2.x.x&#8221; l\u00e0 \u0111\u00e3 c\u00e0i \u0111\u00fang plugin V2. N\u1ebfu b\u00e1o l\u1ed7i &#8220;not a docker command&#8221;, plugin ch\u01b0a \u0111\u01b0\u1ee3c c\u00e0i ho\u1eb7c c\u00e0i kh\u00f4ng th\u00e0nh c\u00f4ng.<\/p>\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 18px; margin-bottom: 8px;\">Docker Compose v\u00e0 Docker Swarm kh\u00e1c nhau th\u1ebf n\u00e0o?<\/h3>\n<p style=\"text-align: justify; margin-bottom: 20px;\">Compose qu\u1ea3n l\u00fd nhi\u1ec1u container tr\u00ean m\u1ed9t m\u00e1y ch\u1ee7 duy nh\u1ea5t b\u1eb1ng m\u1ed9t file YAML. Swarm \u0111i\u1ec1u ph\u1ed1i container tr\u00ean nhi\u1ec1u m\u00e1y ch\u1ee7 th\u00e0nh m\u1ed9t cluster, t\u1ef1 ph\u00e2n ph\u1ed1i t\u1ea3i v\u00e0 kh\u1edfi \u0111\u1ed9ng l\u1ea1i container khi m\u1ed9t node g\u1eb7p s\u1ef1 c\u1ed1 &#8211; th\u1ee9 Compose kh\u00f4ng l\u00e0m \u0111\u01b0\u1ee3c.<\/p>\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 18px; margin-bottom: 8px;\">Ch\u1ea1y Docker Compose tr\u00ean Shared Hosting \u0111\u01b0\u1ee3c kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify; margin-bottom: 20px;\">Kh\u00f4ng. Docker Compose c\u1ea7n quy\u1ec1n root \u0111\u1ec3 c\u00e0i Docker Engine v\u00e0 qu\u1ea3n l\u00fd daemon h\u1ec7 th\u1ed1ng, trong khi Shared Hosting kh\u00f4ng c\u1ea5p quy\u1ec1n n\u00e0y cho t\u1eebng kh\u00e1ch h\u00e0ng. C\u1ea7n VPS ho\u1eb7c Cloud Server m\u1edbi c\u00e0i v\u00e0 ch\u1ea1y \u0111\u01b0\u1ee3c.<\/p>\n<\/div>\n<div style=\"margin-top: 40px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 22px; font-weight: bold; margin-bottom: 15px;\">L\u1eddi k\u1ebft<\/h3>\n<p style=\"text-align: justify;\">C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Docker Compose tr\u00ean Ubuntu kh\u00f4ng kh\u00f3 n\u1ebfu \u0111i \u0111\u00fang th\u1ee9 t\u1ef1: x\u00e1c nh\u1eadn Docker Engine \u0111\u00e3 s\u1eb5n s\u00e0ng, c\u00e0i Compose Plugin qua repo ch\u00ednh th\u1ee9c, th\u00eam user v\u00e0o group docker, r\u1ed3i m\u1edbi vi\u1ebft file YAML th\u1eadt. Ph\u1ea7n l\u1edbn l\u1ed7i ng\u01b0\u1eddi m\u1edbi g\u1eb7p \u0111\u1ebfn t\u1eeb vi\u1ec7c g\u00f5 nh\u1ea7m <code>docker-compose<\/code> khi m\u00e1y ch\u1ec9 c\u00f3 V2, ho\u1eb7c qu\u00ean c\u1ea5p quy\u1ec1n group docker. N\u1eafm ch\u1eafc hai \u0111i\u1ec3m n\u00e0y, ph\u1ea7n c\u00f2n l\u1ea1i ch\u1ec9 l\u00e0 l\u1eb7p l\u1ea1i v\u00e0i l\u1ec7nh quen thu\u1ed9c m\u1ed7i l\u1ea7n deploy th\u00eam service m\u1edbi.<\/p>\n<\/div>\n<p style=\"text-align: justify; font-size: 13px; font-style: italic; color: #6b7280; margin-top: 30px; border-top: 1px solid #E5E7EB; padding-top: 15px;\"><span style=\"font-size: 100%;\"><em>N\u1ed9i dung mang t\u00ednh tham kh\u1ea3o. L\u1ec7nh, c\u00fa ph\u00e1p v\u00e0 c\u00e1ch c\u00e0i \u0111\u1eb7t c\u00f3 th\u1ec3 thay \u0111\u1ed5i theo phi\u00ean b\u1ea3n Docker, Docker Compose v\u00e0 Ubuntu t\u1ea1i th\u1eddi \u0111i\u1ec3m b\u1ea1n th\u1ef1c hi\u1ec7n. N\u00ean \u0111\u1ed1i chi\u1ebfu t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c t\u1ea1i docs.docker.com\/compose, sao l\u01b0u d\u1eef li\u1ec7u v\u00e0 ki\u1ec3m th\u1eed tr\u01b0\u1edbc khi \u00e1p d\u1ee5ng cho production.<\/em><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Docker Compose tr\u00ean Ubuntu l\u00e0 vi\u1ec7c c\u1ea7n l\u00e0m \u0111\u00fang th\u1ee9 t\u1ef1 ngay t\u1eeb \u0111\u1ea7u, v\u00ec ch\u1ec9 c\u1ea7n b\u1ecf s\u00f3t m\u1ed9t b\u01b0\u1edbc l\u00e0 d\u00ednh l\u1ed7i &#8220;command not found&#8221; ho\u1eb7c &#8220;permission denied&#8221; ngay l\u1ea7n ch\u1ea1y th\u1eed \u0111\u1ea7u ti\u00ean. B\u00e0i n\u00e0y \u0111i th\u1eb3ng v\u00e0o t\u1eebng b\u01b0\u1edbc c\u00e0i \u0111\u1eb7t tr\u00ean Ubuntu 20.04, 22.04, 24.04,<\/p>\n","protected":false},"author":2,"featured_media":43473,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[161],"tags":[],"class_list":["post-43466","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-huong-dan-chung"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43466","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=43466"}],"version-history":[{"count":7,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43466\/revisions"}],"predecessor-version":[{"id":43477,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43466\/revisions\/43477"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/43473"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=43466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=43466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=43466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}