{"id":89200,"date":"2025-07-31T21:37:55","date_gmt":"2025-07-31T14:37:55","guid":{"rendered":"https:\/\/itviec.com\/blog\/?p=89200"},"modified":"2025-07-31T21:48:14","modified_gmt":"2025-07-31T14:48:14","slug":"huong-dan-hoc-docker-tutorial","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/","title":{"rendered":"Docker Tutorial cheat sheet: Chi ti\u1ebft c\u00e1ch d\u00f9ng l\u1ec7nh Docker t\u1eeb A-Z"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/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 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#Nhung_dieu_can_biet_de_bat_dau_voi_Docker\" >Nh\u1eefng \u0111i\u1ec1u c\u1ea7n bi\u1ebft \u0111\u1ec3 b\u1eaft \u0111\u1ea7u v\u1edbi 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:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#Tong_quan_kien_truc_Docker_va_cac_khai_niem_thuong_gap\" >T\u1ed5ng quan ki\u1ebfn tr\u00fac Docker v\u00e0 c\u00e1c kh\u00e1i ni\u1ec7m th\u01b0\u1eddng g\u1eb7p<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#Huong_dan_cai_dat_Docker_lam_quen_voi_Docker_CLI\" >H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker &amp; l\u00e0m quen v\u1edbi Docker CLI<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#Huong_dan_chi_tiet_cach_dung_cac_lenh_Docker_co_ban\" >H\u01b0\u1edbng d\u1eabn chi ti\u1ebft c\u00e1ch d\u00f9ng c\u00e1c l\u1ec7nh Docker c\u01a1 b\u1ea3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#Docker_Cheat_Sheet_Tong_hop_cac_lenh_Docker_co_ban\" >Docker Cheat Sheet: T\u1ed5ng h\u1ee3p c\u00e1c l\u1ec7nh Docker c\u01a1 b\u1ea3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#Nhung_sai_lam_khi_hoc_Docker_va_cach_khac_phuc\" >Nh\u1eefng sai l\u1ea7m khi h\u1ecdc Docker v\u00e0 c\u00e1ch kh\u1eafc ph\u1ee5c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#Cac_cau_hoi_thuong_gap_khi_hoc_Docker\" >C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p khi h\u1ecdc Docker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#Tong_ket\" >T\u1ed5ng k\u1ebft<\/a><\/li><\/ul><\/nav><\/div>\n\n<p><strong><em>N\u1ebfu b\u1ea1n \u0111ang c\u1ea7n m\u1ed9t Docker tutorial d\u1ec5 hi\u1ec3u, c\u00f3 h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng r\u00f5 r\u00e0ng t\u1eeb l\u00fd thuy\u1ebft \u0111\u1ebfn th\u1ef1c h\u00e0nh, th\u00ec b\u00e0i vi\u1ebft n\u00e0y l\u00e0 d\u00e0nh cho b\u1ea1n. B\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c h\u01b0\u1edbng d\u1eabn t\u1eebng b\u01b0\u1edbc t\u1eeb t\u00ecm hi\u1ec3u c\u00e1c kh\u00e1i ni\u1ec7m c\u01a1 b\u1ea3n, h\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t, build, ch\u1ea1y v\u00e0 qu\u1ea3n l\u00fd container. Tutorial n\u00e0y c\u0169ng cung c\u1ea5p v\u00ed d\u1ee5 th\u1ef1c t\u1ebf \u0111\u1ec3 b\u1ea1n d\u1ec5 d\u00e0ng \u00e1p d\u1ee5ng Docker v\u00e0o quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m.<\/em><\/strong><\/p>\n\n\n\n<p>\u0110\u1ecdc b\u00e0i vi\u1ebft sau \u0111\u1ec3 hi\u1ec3u r\u00f5:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00e1c kh\u00e1i ni\u1ec7m th\u01b0\u1eddng g\u1eb7p khi l\u00e0m vi\u1ec7c v\u1edbi Docker<\/li>\n\n\n\n<li>C\u00e1ch c\u00e0i \u0111\u1eb7t Docker v\u00e0 l\u00e0m quen v\u1edbi c\u00f4ng c\u1ee5 Docker CLI<\/li>\n\n\n\n<li>C\u00e1ch d\u00f9ng l\u1ec7nh Docker c\u01a1 b\u1ea3n<\/li>\n\n\n\n<li>C\u00e1ch kh\u1eafc ph\u1ee5c l\u1ed7i th\u01b0\u1eddng g\u1eb7p khi l\u00e0m vi\u1ec7c v\u1edbi Docker<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-nh\u1eefng-di\u1ec1u-c\u1ea7n-bi\u1ebft-d\u1ec3-b\u1eaft-d\u1ea7u-v\u1edbi-docker\"><span class=\"ez-toc-section\" id=\"Nhung_dieu_can_biet_de_bat_dau_voi_Docker\"><\/span><strong>Nh\u1eefng \u0111i\u1ec1u c\u1ea7n bi\u1ebft \u0111\u1ec3 b\u1eaft \u0111\u1ea7u v\u1edbi Docker<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Tr\u01b0\u1edbc khi v\u00e0o ph\u1ea7n Docker tutorial ch\u00ednh, b\u1ea1n c\u1ea7n hi\u1ec3u r\u00f5 Docker l\u00e0 g\u00ec v\u00e0 v\u00ec sao c\u00f4ng ngh\u1ec7 n\u00e0y l\u1ea1i tr\u1edf th\u00e0nh xu h\u01b0\u1edbng trong ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m hi\u1ec7n \u0111\u1ea1i.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-la-gi\"><strong>Docker l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n<p>Docker l\u00e0 m\u1ed9t n\u1ec1n t\u1ea3ng m\u00e3 ngu\u1ed3n m\u1edf gi\u00fap \u0111\u00f3ng g\u00f3i, ph\u00e2n ph\u1ed1i v\u00e0 ch\u1ea1y \u1ee9ng d\u1ee5ng trong m\u00f4i tr\u01b0\u1eddng c\u00e1ch ly g\u1ecdi l\u00e0 container.&nbsp;<\/p>\n\n\n\n<p>\u0110\u1ec3 th\u1ea5y r\u00f5 l\u1ee3i \u00edch c\u1ee7a Docker, b\u1ea1n c\u1ea7n hi\u1ec3u hai kh\u00e1i ni\u1ec7m quan tr\u1ecdng l\u00e0 <strong>containerization<\/strong> v\u00e0 <strong>virtualization<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Virtualization (\u1ea3o h\u00f3a)<\/strong>: L\u00e0 k\u1ef9 thu\u1eadt t\u1ea1o ra nhi\u1ec1u m\u00e1y \u1ea3o (Virtual Machine &#8211; VM) tr\u00ean c\u00f9ng m\u1ed9t ph\u1ea7n c\u1ee9ng v\u1eadt l\u00fd. M\u1ed7i VM ch\u1ea1y m\u1ed9t h\u1ec7 \u0111i\u1ec1u h\u00e0nh ri\u00eang, ti\u00eau t\u1ed1n nhi\u1ec1u t\u00e0i nguy\u00ean.<\/li>\n\n\n\n<li><strong>Containerization (\u0111\u00f3ng g\u00f3i \u1ee9ng d\u1ee5ng trong container)<\/strong>: L\u00e0 c\u00e1ch \u0111\u00f3ng g\u00f3i \u1ee9ng d\u1ee5ng c\u00f9ng m\u00f4i tr\u01b0\u1eddng ch\u1ea1y v\u00e0o c\u00e1c container nh\u1eb9, d\u00f9ng chung kernel h\u1ec7 \u0111i\u1ec1u h\u00e0nh ch\u1ee7, cho ph\u00e9p nhi\u1ec1u \u1ee9ng d\u1ee5ng ch\u1ea1y \u0111\u1ed3ng th\u1eddi tr\u00ean c\u00f9ng m\u1ed9t h\u1ec7 th\u1ed1ng m\u00e0 kh\u00f4ng xung \u0111\u1ed9t t\u00e0i nguy\u00ean.<\/li>\n<\/ul>\n\n\n\n<p>Docker ch\u00ednh l\u00e0 n\u1ec1n t\u1ea3ng containerization ph\u1ed5 bi\u1ebfn nh\u1ea5t hi\u1ec7n nay. Kh\u00f4ng gi\u1ed1ng nh\u01b0 m\u00e1y \u1ea3o (Virtual Machine) v\u1ed1n y\u00eau c\u1ea7u h\u1ec7 \u0111i\u1ec1u h\u00e0nh ri\u00eang bi\u1ec7t cho m\u1ed7i \u1ee9ng d\u1ee5ng, Docker s\u1eed d\u1ee5ng chung kernel c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh ch\u1ee7, gi\u00fap ti\u1ebft ki\u1ec7m t\u00e0i nguy\u00ean v\u00e0 kh\u1edfi \u0111\u1ed9ng nhanh h\u01a1n. \u0110i\u1ec1u n\u00e0y l\u00e0m cho Docker nh\u1eb9 h\u01a1n, nhanh h\u01a1n v\u00e0 d\u1ec5 t\u00edch h\u1ee3p v\u00e0o c\u00e1c quy tr\u00ecnh ph\u00e1t tri\u1ec3n hi\u1ec7n \u0111\u1ea1i.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u0110\u1ecdc chi ti\u1ebft: <a href=\"https:\/\/itviec.com\/blog\/docker-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Docker l\u00e0 g\u00ec? H\u00e3y \u0111\u1ec3 Senior DevOps Engineer tr\u1ea3 l\u1eddi cho b\u1ea1n!<\/strong><\/a><\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-\u1ee9ng-d\u1ee5ng-c\u1ee7a-docker\"><strong>\u1ee8ng d\u1ee5ng c\u1ee7a Docker<\/strong><\/h3>\n\n\n\n<p>Docker kh\u00f4ng ch\u1ec9 gi\u00fap \u0111\u01a1n gi\u1ea3n h\u00f3a quy tr\u00ecnh tri\u1ec3n khai \u1ee9ng d\u1ee5ng m\u00e0 c\u00f2n \u0111\u1ea3m b\u1ea3o \u1ee9ng d\u1ee5ng ch\u1ea1y nh\u1ea5t qu\u00e1n \u1edf m\u1ecdi m\u00f4i tr\u01b0\u1eddng, t\u1eeb ph\u00e1t tri\u1ec3n \u0111\u1ebfn production.&nbsp;<\/p>\n\n\n\n<p>Trong th\u1ef1c t\u1ebf, Docker \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng r\u1ed9ng r\u00e3i cho nhi\u1ec1u m\u1ee5c \u0111\u00edch nh\u01b0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>T\u1ef1 \u0111\u1ed9ng h\u00f3a quy tr\u00ecnh CI\/CD, gi\u00fap t\u0103ng t\u1ed1c \u0111\u1ed9 build, test v\u00e0 deploy<\/li>\n\n\n\n<li>Th\u1eed nghi\u1ec7m ph\u1ea7n m\u1ec1m, t\u1ea1o nhanh c\u00e1c m\u00f4i tr\u01b0\u1eddng \u0111\u1ed9c l\u1eadp \u0111\u1ec3 ki\u1ec3m th\u1eed<\/li>\n\n\n\n<li>M\u1edf r\u1ed9ng h\u1ec7 th\u1ed1ng theo chi\u1ec1u ngang (horizontal scaling)<\/li>\n\n\n\n<li>T\u1ea1o m\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n \u0111\u1ed3ng nh\u1ea5t gi\u1eefa c\u00e1c th\u00e0nh vi\u00ean trong team, tr\u00e1nh l\u1ed7i \u201ckh\u00e1c m\u00f4i tr\u01b0\u1eddng\u201d.<\/li>\n\n\n\n<li>Qu\u1ea3n l\u00fd c\u00e1c dependencies ph\u1ee9c t\u1ea1p m\u1ed9t c\u00e1ch g\u1ecdn g\u00e0ng, d\u1ec5 ki\u1ec3m so\u00e1t.<\/li>\n\n\n\n<li>Tri\u1ec3n khai \u0111a n\u1ec1n t\u1ea3ng (multi-cloud), \u0111\u1ea3m b\u1ea3o \u1ee9ng d\u1ee5ng ch\u1ea1y \u1ed5n \u0111\u1ecbnh tr\u00ean nhi\u1ec1u h\u1ea1 t\u1ea7ng kh\u00e1c nhau.<\/li>\n\n\n\n<li>H\u1ed7 tr\u1ee3 ki\u1ebfn tr\u00fac microservices, gi\u00fap doanh nghi\u1ec7p d\u1ec5 d\u00e0ng m\u1edf r\u1ed9ng, qu\u1ea3n l\u00fd v\u00e0 v\u1eadn h\u00e0nh \u1ee9ng d\u1ee5ng \u1edf quy m\u00f4 l\u1edbn.<\/li>\n<\/ul>\n\n\n\n<p>\u0110\u00e2y l\u00e0 nh\u1eefng l\u00fd do khi\u1ebfn Docker ng\u00e0y c\u00e0ng \u0111\u01b0\u1ee3c \u01b0a chu\u1ed9ng trong quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m hi\u1ec7n \u0111\u1ea1i.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-n\u1ec1n-t\u1ea3ng-ki\u1ebfn-th\u1ee9c-c\u1ea7n-co-tr\u01b0\u1edbc-khi-dung-docker\"><strong>N\u1ec1n t\u1ea3ng ki\u1ebfn th\u1ee9c c\u1ea7n c\u00f3 tr\u01b0\u1edbc khi d\u00f9ng Docker<\/strong><\/h3>\n\n\n\n<p>\u0110\u1ec3 \u00e1p d\u1ee5ng Docker tutorial m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3 nh\u1ea5t, b\u1ea1n c\u1ea7n c\u00f3 s\u1eb5n m\u1ed9t s\u1ed1 ki\u1ebfn th\u1ee9c n\u1ec1n t\u1ea3ng v\u1ec1 h\u1ec7 th\u1ed1ng, l\u1eadp tr\u00ecnh v\u00e0 m\u1ea1ng m\u00e1y t\u00ednh.&nbsp;<\/p>\n\n\n\n<p>C\u1ee5 th\u1ec3, b\u1ea1n n\u00ean c\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>K\u1ef9 n\u0103ng s\u1eed d\u1ee5ng d\u00f2ng l\u1ec7nh Linux (command line)<\/strong>: Ph\u1ea7n l\u1edbn thao t\u00e1c v\u1edbi Docker \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n qua terminal, do \u0111\u00f3 b\u1ea1n c\u1ea7n th\u00e0nh th\u1ea1o c\u00e1c l\u1ec7nh c\u01a1 b\u1ea3n nh\u01b0 ls, cd, mkdir, rm, chmod, chown.<\/li>\n\n\n\n<li><strong>Hi\u1ec3u v\u1ec1 c\u1ea5u tr\u00fac file h\u1ec7 th\u1ed1ng<\/strong>: Gi\u00fap hi\u1ec3u r\u00f5 c\u00e1ch Docker qu\u1ea3n l\u00fd volume, mount th\u01b0 m\u1ee5c, v\u00e0 build image.<\/li>\n\n\n\n<li><strong>Ki\u1ebfn th\u1ee9c Networking c\u01a1 b\u1ea3n<\/strong>: TCP\/IP, ports, localhost, c\u1ea7n thi\u1ebft \u0111\u1ec3 c\u1ea5u h\u00ecnh c\u00e1c container giao ti\u1ebfp v\u1edbi nhau.<\/li>\n\n\n\n<li><strong>Bi\u1ebft d\u00f9ng Version Control (Git)<\/strong>: \u0110\u1ec3 qu\u1ea3n l\u00fd source code v\u00e0 Dockerfile trong qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n<\/li>\n\n\n\n<li><strong>Hi\u1ec3u c\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a \u1ee9ng d\u1ee5ng web<\/strong> nh\u01b0 Node.js, Python, PHP, Java,&#8230; \u0111\u1ec3 bi\u1ebft c\u00e1ch \u0111\u00f3ng g\u00f3i \u1ee9ng d\u1ee5ng v\u00e0o image c\u00f9ng v\u1edbi dependencies v\u00e0 environment variables.<\/li>\n\n\n\n<li><strong>Bi\u1ebft d\u00f9ng Text editor\/IDE<\/strong>: \u0110\u1ec3 t\u1ea1o v\u00e0 ch\u1ec9nh s\u1eeda Dockerfile, docker-compose.yml v\u00e0 c\u00e1c configuration files<\/li>\n\n\n\n<li><strong>Ki\u1ebfn th\u1ee9c v\u1ec1 Virtualization vs Containerizatio<\/strong>n: Gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 s\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa m\u00e1y \u1ea3o v\u00e0 container, t\u1eeb \u0111\u00f3 th\u1ea5y \u0111\u01b0\u1ee3c l\u1ee3i \u00edch c\u1ee7a Docker.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-quan-ki\u1ebfn-truc-docker-va-cac-khai-ni\u1ec7m-th\u01b0\u1eddng-g\u1eb7p\"><span class=\"ez-toc-section\" id=\"Tong_quan_kien_truc_Docker_va_cac_khai_niem_thuong_gap\"><\/span><strong>T\u1ed5ng quan ki\u1ebfn tr\u00fac Docker v\u00e0 c\u00e1c kh\u00e1i ni\u1ec7m th\u01b0\u1eddng g\u1eb7p<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cac-thanh-ph\u1ea7n-chinh-c\u1ee7a-docker\"><strong>C\u00e1c th\u00e0nh ph\u1ea7n ch\u00ednh c\u1ee7a<\/strong><strong> Docker<\/strong><\/h3>\n\n\n\n<p>Docker \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng theo m\u00f4 h\u00ecnh client-server v\u1edbi Docker Engine l\u00e0m th\u00e0nh ph\u1ea7n l\u00f5i.<\/p>\n\n\n\n<p>C\u1ee5 th\u1ec3 c\u00e1c th\u00e0nh ph\u1ea7n ch\u00ednh c\u1ee7a Docker:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Docker Engine<\/strong>: \u0110\u00e2y l\u00e0 th\u00e0nh ph\u1ea7n l\u00f5i c\u1ee7a Docker, bao g\u1ed3m daemon (dockerd) v\u00e0 client (docker CLI), ch\u1ecbu tr\u00e1ch nhi\u1ec7m kh\u1edfi t\u1ea1o v\u00e0 qu\u1ea3n l\u00fd container.<\/li>\n\n\n\n<li><strong>Docker Client<\/strong>: Giao di\u1ec7n n\u01a1i ng\u01b0\u1eddi d\u00f9ng t\u01b0\u01a1ng t\u00e1c, th\u01b0\u1eddng th\u00f4ng qua d\u00f2ng l\u1ec7nh ho\u1eb7c qua Docker Desktop GUI.<\/li>\n\n\n\n<li><strong>Docker CLI<\/strong>: Giao di\u1ec7n d\u00f2ng l\u1ec7nh gi\u00fap b\u1ea1n t\u01b0\u01a1ng t\u00e1c v\u1edbi Docker.<\/li>\n\n\n\n<li><strong>Docker Daemon (dockerd)<\/strong>: Ti\u1ebfn tr\u00ecnh ch\u1ea1y ng\u1ea7m ch\u1ecbu tr\u00e1ch nhi\u1ec7m x\u1eed l\u00fd c\u00e1c l\u1ec7nh t\u1eeb client th\u00f4ng qua REST API, qu\u1ea3n l\u00fd container, image, network, volume,&#8230;<\/li>\n\n\n\n<li><strong>Docker Registry<\/strong>: N\u01a1i l\u01b0u tr\u1eef v\u00e0 ph\u00e2n ph\u1ed1i Docker Image, ph\u1ed5 bi\u1ebfn nh\u1ea5t l\u00e0 Docker Hub c\u00f4ng c\u1ed9ng, ngo\u00e0i ra c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c private registry nh\u01b0 Amazon ECR, Google GCR, ho\u1eb7c self-hosted registry.&nbsp;<\/li>\n\n\n\n<li><strong>Docker API<\/strong>: Cung c\u1ea5p RESTful interface \u0111\u1ec3 client giao ti\u1ebfp v\u1edbi daemon.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cac-khai-ni\u1ec7m-docker-th\u01b0\u1eddng-g\u1eb7p\"><strong>C\u00e1c kh\u00e1i ni\u1ec7m Docker th\u01b0\u1eddng g\u1eb7p<\/strong><\/h3>\n\n\n\n<p>Ngo\u00e0i ra, b\u1ea1n c\u1ea7n hi\u1ec3u \u0111\u01b0\u1ee3c c\u00e1c kh\u00e1i ni\u1ec7m c\u1ed1t l\u00f5i d\u01b0\u1edbi \u0111\u00e2y \u0111\u1ec3 d\u1ec5 d\u00e0ng theo s\u00e1t c\u00e1c b\u01b0\u1edbc trong Docker tutorial:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/itviec.com\/blog\/docker-image-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Image<\/a><\/strong>: Read-only template \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng t\u1eeb nhi\u1ec1u layer c\u1ee7a \u1ee9ng d\u1ee5ng v\u00e0 m\u00f4i tr\u01b0\u1eddng ch\u1ea1y, \u0111\u01b0\u1ee3c d\u00f9ng \u0111\u1ec3 t\u1ea1o container. M\u1ed7i image c\u00f3 tag \u0111\u1ec3 ph\u00e2n bi\u1ec7t phi\u00ean b\u1ea3n (v\u00ed d\u1ee5: nginx:1.21, ubuntu:20.04)<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/itviec.com\/blog\/docker-container\/\">Docker Container<\/a>:<\/strong> Instance \u0111ang ch\u1ea1y \u0111\u01b0\u1ee3c t\u1ea1o ra t\u1eeb image, c\u00f3 lifecycle ri\u00eang (created \u2192 running \u2192 stopped \u2192 removed), ho\u1ea1t \u0111\u1ed9ng \u0111\u1ed9c l\u1eadp v\u1edbi namespace ri\u00eang bi\u1ec7t h\u1ec7 th\u1ed1ng ch\u1ee7.<\/li>\n\n\n\n<li><strong>Repository:<\/strong> M\u1ed9t nh\u00f3m c\u00e1c image c\u00f3 c\u00f9ng t\u00ean nh\u01b0ng kh\u00e1c tag (v\u00ed d\u1ee5: nginx:1.25, nginx:latest).<\/li>\n\n\n\n<li><strong>Volume:<\/strong> D\u00f9ng \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u b\u00ean ngo\u00e0i container, \u0111\u1ea3m b\u1ea3o d\u1eef li\u1ec7u kh\u00f4ng b\u1ecb m\u1ea5t khi container b\u1ecb x\u00f3a v\u00e0 c\u00f3 th\u1ec3 chia s\u1ebb gi\u1eefa nhi\u1ec1u containers.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/itviec.com\/blog\/docker-network-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Network<\/a>:<\/strong> Cho ph\u00e9p c\u00e1c container giao ti\u1ebfp v\u1edbi nhau ho\u1eb7c v\u1edbi th\u1ebf gi\u1edbi b\u00ean ngo\u00e0i th\u00f4ng qua c\u00e1c driver nh\u01b0 bridge, host, overlay, macvlan.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/itviec.com\/blog\/dockerfile-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Dockerfile<\/a><\/strong>: File c\u1ea5u h\u00ecnh ch\u1ee9a c\u00e1c instructions (FROM, RUN, COPY, EXPOSE, CMD) d\u00f9ng \u0111\u1ec3 build m\u1ed9t image t\u00f9y ch\u1ec9nh t\u1eeb m\u00e3 ngu\u1ed3n v\u00e0 m\u00f4i tr\u01b0\u1eddng c\u1ee7a b\u1ea1n v\u1edbi layer caching \u0111\u1ec3 t\u1ed1i \u01b0u build time.<\/li>\n\n\n\n<li><strong>Docker Compose<\/strong>: C\u00f4ng c\u1ee5 gi\u00fap \u0111\u1ecbnh ngh\u0129a v\u00e0 ch\u1ea1y nhi\u1ec1u container c\u00f9ng l\u00fac th\u00f4ng qua file docker-compose.yml v\u1edbi service definitions, dependencies, v\u00e0 shared resources.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/itviec.com\/blog\/docker-hub-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Hub<\/a><\/strong>: Kho l\u01b0u tr\u1eef image ph\u1ed5 bi\u1ebfn nh\u1ea5t, n\u01a1i b\u1ea1n c\u00f3 th\u1ec3 pull\/push image.<\/li>\n\n\n\n<li><strong>Environment Variables<\/strong>: Bi\u1ebfn m\u00f4i tr\u01b0\u1eddng \u0111\u1ec3 c\u1ea5u h\u00ecnh runtime behavior (-e, &#8211;env-file)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-h\u01b0\u1edbng-d\u1eabn-cai-d\u1eb7t-docker-amp-lam-quen-v\u1edbi-docker-cli\"><span class=\"ez-toc-section\" id=\"Huong_dan_cai_dat_Docker_lam_quen_voi_Docker_CLI\"><\/span><strong>H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker &amp; l\u00e0m quen v\u1edbi Docker CLI<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cai-d\u1eb7t-docker\"><strong>C\u00e0i \u0111\u1eb7t Docker<\/strong><\/h3>\n\n\n\n<p>B\u01b0\u1edbc \u0111\u1ea7u ti\u00ean c\u00e0i \u0111\u1eb7t Docker tr\u00ean h\u1ec7 \u0111i\u1ec1u h\u00e0nh ph\u00f9 h\u1ee3p. Docker h\u1ed7 tr\u1ee3 c\u00e0i \u0111\u1eb7t tr\u00ean Windows, macOS v\u00e0 h\u1ea7u h\u1ebft c\u00e1c b\u1ea3n ph\u00e2n ph\u1ed1i Linux ph\u1ed5 bi\u1ebfn nh\u01b0 Ubuntu, Debian, CentOS. Vi\u1ec7c c\u00e0i \u0111\u1eb7t \u0111\u00fang c\u00e1ch s\u1ebd \u0111\u1ea3m b\u1ea3o Docker Engine v\u00e0 Docker CLI ho\u1ea1t \u0111\u1ed9ng \u1ed5n \u0111\u1ecbnh, gi\u00fap b\u1ea1n d\u1ec5 d\u00e0ng t\u1ea1o, ch\u1ea1y v\u00e0 qu\u1ea3n l\u00fd container trong qu\u00e1 tr\u00ecnh h\u1ecdc v\u00e0 tri\u1ec3n khai \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Xem h\u01b0\u1edbng d\u1eabn chi ti\u1ebft <strong><a href=\"https:\/\/itviec.com\/blog\/huong-dan-install-docker\/\" target=\"_blank\" rel=\"noreferrer noopener\">c\u00e1ch c\u00e0i \u0111\u1eb7t Docker tr\u00ean c\u00e1c h\u1ec7 \u0111i\u1ec1u h\u00e0nh<\/a><\/strong>.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ki\u1ec3m-tra-docker-cli-va-docker-daemon-nbsp\"><strong>Ki\u1ec3m tra Docker CLI v\u00e0 Docker Daemon&nbsp;<\/strong><\/h3>\n\n\n\n<p>Sau khi c\u00e0i \u0111\u1eb7t Docker th\u00e0nh c\u00f4ng, h\u00e3y ki\u1ec3m tra xem Docker CLI v\u00e0 Docker Daemon c\u00f3 \u0111ang ho\u1ea1t \u0111\u1ed9ng \u0111\u00fang hay kh\u00f4ng.<\/p>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m tra nhanh b\u1eb1ng c\u00e1c l\u1ec7nh sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker version<\/code><\/pre>\n\n\n\n<p>Hi\u1ec3n th\u1ecb th\u00f4ng tin v\u1ec1 phi\u00ean b\u1ea3n Docker Client v\u00e0 Server (Daemon). N\u1ebfu Daemon kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng, ph\u1ea7n &#8220;Server&#8221; s\u1ebd kh\u00f4ng hi\u1ec3n th\u1ecb.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker info<\/code><\/pre>\n\n\n\n<p>Cung c\u1ea5p th\u00f4ng tin chi ti\u1ebft v\u1ec1 h\u1ec7 th\u1ed1ng Docker \u0111ang ch\u1ea1y, bao g\u1ed3m s\u1ed1 l\u01b0\u1ee3ng container, image, tr\u1ea1ng th\u00e1i daemon,&#8230;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Sudo systemctl status docker (Linux)&nbsp;<\/code><\/pre>\n\n\n\n<p>Ki\u1ec3m tra tr\u1ea1ng th\u00e1i d\u1ecbch v\u1ee5 Docker Daemon. N\u1ebfu ch\u01b0a ch\u1ea1y, c\u00f3 th\u1ec3 kh\u1edfi \u0111\u1ed9ng b\u1eb1ng l\u1ec7nh sudo systemctl start docker.<\/p>\n\n\n\n<p>Vi\u1ec7c \u0111\u1ea3m b\u1ea3o Docker CLI v\u00e0 Daemon ho\u1ea1t \u0111\u1ed9ng \u1ed5n \u0111\u1ecbnh l\u00e0 b\u01b0\u1edbc ki\u1ec3m tra quan tr\u1ecdng tr\u01b0\u1edbc khi \u0111i s\u00e2u v\u00e0o c\u00e1c thao t\u00e1c trong docker tutorial nh\u01b0 pull image, build container hay s\u1eed d\u1ee5ng Docker Compose.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-h\u01b0\u1edbng-d\u1eabn-chi-ti\u1ebft-cach-dung-cac-l\u1ec7nh-docker-c\u01a1-b\u1ea3n\"><span class=\"ez-toc-section\" id=\"Huong_dan_chi_tiet_cach_dung_cac_lenh_Docker_co_ban\"><\/span><strong>H\u01b0\u1edbng d\u1eabn chi ti\u1ebft c\u00e1ch d\u00f9ng c\u00e1c l\u1ec7nh Docker c\u01a1 b\u1ea3n<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-c\u1ea5u-truc-l\u1ec7nh-docker\"><strong>C\u1ea5u tr\u00fac l\u1ec7nh Docker<\/strong><\/h3>\n\n\n\n<p>T\u1ea5t c\u1ea3 l\u1ec7nh Docker \u0111\u1ec1u tu\u00e2n theo c\u00fa ph\u00e1p chu\u1ea9n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker &#91;OPTIONS] COMMAND &#91;ARG...]<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>docker<\/code>: ch\u01b0\u01a1ng tr\u00ecnh d\u00f2ng l\u1ec7nh \u0111\u1ec3 t\u01b0\u01a1ng t\u00e1c v\u1edbi Docker Engine.<\/li>\n\n\n\n<li><code>[OPTIONS]<\/code>: tu\u1ef3 ch\u1ecdn cho l\u1ec7nh (c\u00f3 ho\u1eb7c kh\u00f4ng).<\/li>\n\n\n\n<li><code>COMMAND<\/code>: h\u00e0nh \u0111\u1ed9ng mu\u1ed1n th\u1ef1c hi\u1ec7n (v\u00ed d\u1ee5: run, build, ps,&#8230;)<\/li>\n\n\n\n<li><code>[ARG...]<\/code>: c\u00e1c \u0111\u1ed1i s\u1ed1 c\u1ea7n thi\u1ebft cho l\u1ec7nh \u0111\u00f3.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-h\u01b0\u1edbng-d\u1eabn-thao-tac-v\u1edbi-docker-container\"><strong>H\u01b0\u1edbng d\u1eabn thao t\u00e1c v\u1edbi Docker Container<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-kh\u1edfi-d\u1ed9ng-container-d\u1ea7u-tien\"><strong>Kh\u1edfi \u0111\u1ed9ng container \u0111\u1ea7u ti\u00ean<\/strong><\/h4>\n\n\n\n<p>C\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run hello-world<\/code><\/pre>\n\n\n\n<p>Gi\u1ea3i th\u00edch:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>run<\/code>: t\u1ea1o v\u00e0 kh\u1edfi ch\u1ea1y m\u1ed9t container.<\/li>\n\n\n\n<li><code>hello-world<\/code>: t\u00ean c\u1ee7a Docker image m\u1eabu \u0111\u01b0\u1ee3c cung c\u1ea5p b\u1edfi Docker Hub.<\/li>\n<\/ul>\n\n\n\n<p>L\u1ec7nh n\u00e0y t\u1ea3i image <code>hello-world<\/code> t\u1eeb Docker Hub (n\u1ebfu ch\u01b0a c\u00f3), sau \u0111\u00f3 ch\u1ea1y container \u0111\u1ec3 in ra th\u00f4ng b\u00e1o &#8220;Docker is working&#8221;. \u0110\u00e2y l\u00e0 b\u01b0\u1edbc \u0111\u01a1n gi\u1ea3n nh\u1ea5t \u0111\u1ec3 x\u00e1c minh Docker Engine \u0111\u00e3 c\u00e0i \u0111\u00fang.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-ch\u1ea1y-web-server-v\u1edbi-nginx\"><strong>Ch\u1ea1y web server v\u1edbi NGINX<\/strong><\/h4>\n\n\n\n<p>M\u1ee5c ti\u00eau: Ch\u1ea1y m\u1ed9t container n\u1ec1n c\u00f3 web server th\u1ef1c t\u1ebf.<\/p>\n\n\n\n<p>C\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d -p 8080:80 --name webserver nginx<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-d<\/code>: ch\u1ea1y container \u1edf ch\u1ebf \u0111\u1ed9 n\u1ec1n<\/li>\n\n\n\n<li><code>-p 8080:80<\/code>: \u00e1nh x\u1ea1 c\u1ed5ng 8080 tr\u00ean m\u00e1y b\u1ea1n sang c\u1ed5ng 80 c\u1ee7a container<\/li>\n\n\n\n<li><code>--name<\/code>: \u0111\u1eb7t t\u00ean container l\u00e0 webserver<\/li>\n<\/ul>\n\n\n\n<p>Sau khi ch\u1ea1y, m\u1edf tr\u00ecnh duy\u1ec7t v\u00e0 truy c\u1eadp \u0111\u1ecba ch\u1ec9 http:\/\/localhost:8080, b\u1ea1n s\u1ebd th\u1ea5y trang ch\u00e0o m\u1eebng t\u1eeb NGINX.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-cac-l\u1ec7nh-qu\u1ea3n-ly-container-dang-ho\u1ea1t-d\u1ed9ng\"><strong>C\u00e1c l\u1ec7nh qu\u1ea3n l\u00fd container \u0111ang ho\u1ea1t \u0111\u1ed9ng<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>L\u1ec7nh<\/strong><\/td><td><strong>M\u1ee5c ti\u00eau<\/strong><\/td><td><strong>Gi\u1ea3i th\u00edch<\/strong><\/td><\/tr><tr><td><code>docker ps<\/code><\/td><td>Xem container \u0111ang ch\u1ea1y<\/td><td>Ch\u1ec9 li\u1ec7t k\u00ea container ho\u1ea1t \u0111\u1ed9ng<\/td><\/tr><tr><td><code>docker ps -a<\/code><\/td><td>Xem t\u1ea5t c\u1ea3 container (k\u1ec3 c\u1ea3 \u0111\u00e3 d\u1eebng)<\/td><td>Bao g\u1ed3m container \u0111\u00e3 d\u1eebng<\/td><\/tr><tr><td><code>docker logs webserver<\/code><\/td><td>Xem log c\u1ee7a container<\/td><td>Hi\u1ec3n th\u1ecb log container webserver<\/td><\/tr><tr><td><code>docker stop webserver<\/code><\/td><td>D\u1eebng container<\/td><td>T\u1eaft qu\u00e1 tr\u00ecnh container<\/td><\/tr><tr><td><code>docker rm webserver<\/code><\/td><td>Xo\u00e1 container<\/td><td>Ch\u1ec9 th\u1ef1c hi\u1ec7n sau khi container \u0111\u00e3 d\u1eebng<\/td><\/tr><tr><td><code>docker exec -it webserver bash<\/code><\/td><td>Truy c\u1eadp b\u00ean trong container&nbsp;<\/td><td>Nh\u01b0 ssh v\u00e0o b\u00ean trong container<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cac-thao-tac-v\u1edbi-docker-image\"><strong>C\u00e1c thao t\u00e1c v\u1edbi Docker Image<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-t\u1ea1o-docker-image-t\u1eeb-\u1ee9ng-d\u1ee5ng-node-js\"><strong>T\u1ea1o Docker Image t\u1eeb \u1ee9ng d\u1ee5ng Node.js<\/strong><\/h4>\n\n\n\n<p>\u0110\u1ec3 t\u1ea1o Docker Image t\u1eeb \u1ee9ng d\u1ee5ng Node.js, b\u1ea1n l\u00e0m c\u00e1c b\u01b0\u1edbc sau:<\/p>\n\n\n\n<p><strong>B\u01b0\u1edbc 1: T\u1ea1o file Dockerfile<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM node:18&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # S\u1eed d\u1ee5ng image Node.js 18 l\u00e0m n\u1ec1n\n\nWORKDIR \/app&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # \u0110\u1eb7t th\u01b0 m\u1ee5c l\u00e0m vi\u1ec7c trong container\n\nCOPY . .&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Sao ch\u00e9p t\u1ea5t c\u1ea3 file hi\u1ec7n t\u1ea1i v\u00e0o container\n\nRUN npm install &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # C\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n c\u1ea7n thi\u1ebft\n\nCMD &#91;\"node\", \"index.js\"]&nbsp; &nbsp; # C\u00e2u l\u1ec7nh ch\u1ea1y ch\u00ednh khi container kh\u1edfi \u0111\u1ed9ng<\/code><\/pre>\n\n\n\n<p><strong>B\u01b0\u1edbc 2: Build image<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build -t mynodeapp .<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-t mynodeapp<\/code>: \u0111\u1eb7t t\u00ean image l\u00e0 mynodeapp.<\/li>\n\n\n\n<li><code>.<\/code>: ch\u1ec9 \u0111\u1ecbnh build context l\u00e0 th\u01b0 m\u1ee5c hi\u1ec7n t\u1ea1i.<\/li>\n<\/ul>\n\n\n\n<p><strong>B\u01b0\u1edbc 3: Ch\u1ea1y \u1ee9ng d\u1ee5ng t\u1eeb image v\u1eeba t\u1ea1o<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d -p 3000:3000 --name myapp mynodeapp<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3: Web app Node.js s\u1ebd ho\u1ea1t \u0111\u1ed9ng t\u1ea1i <a href=\"http:\/\/localhost:3000\">http:\/\/localhost:3000<\/a>. \u0110\u1ec3 ki\u1ec3m tra, h\u00e3y m\u1edf tr\u00ecnh duy\u1ec7t v\u00e0 truy c\u1eadp <a href=\"http:\/\/localhost:3000\">http:\/\/localhost:3000<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-dang-nh\u1eadp-docker-hub-va-chia-s\u1ebb-image\"><strong>\u0110\u0103ng nh\u1eadp Docker Hub v\u00e0 chia s\u1ebb image<\/strong><\/h4>\n\n\n\n<p><strong>B\u01b0\u1edbc 1: \u0110\u0103ng nh\u1eadp t\u00e0i kho\u1ea3n Docker Hub b\u1eb1ng l\u1ec7nh<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker login<\/code><\/pre>\n\n\n\n<p><strong>B\u01b0\u1edbc 2: G\u1eafn nh\u00e3n (tag) cho image \u0111\u1ec3 chu\u1ea9n \u0111\u1ecbnh danh<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker tag mynodeapp yourusername\/mynodeapp:v1<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3: <strong><code>tag<\/code><\/strong> t\u1ea1o \u0111\u1ecbnh danh chu\u1ea9n \u0111\u1ec3 Docker bi\u1ebft b\u1ea1n mu\u1ed1n \u0111\u1ea9y image n\u00e0y l\u00ean t\u00e0i kho\u1ea3n n\u00e0o.<\/p>\n\n\n\n<p><strong>B\u01b0\u1edbc 3: Push image l\u00ean Docker Hub<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker push yourusername\/mynodeapp:v1<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3: Image s\u1ebd xu\u1ea5t hi\u1ec7n c\u00f4ng khai ho\u1eb7c ri\u00eang t\u01b0 tr\u00ean t\u00e0i kho\u1ea3n Docker Hub c\u1ee7a b\u1ea1n.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-cac-l\u1ec7nh-qu\u1ea3n-ly-docker-image\"><strong>C\u00e1c l\u1ec7nh qu\u1ea3n l\u00fd Docker Image<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>L\u1ec7nh<\/strong><\/td><td><strong>M\u1ee5c ti\u00eau<\/strong><\/td><\/tr><tr><td><code>docker search mysql<\/code><\/td><td>T\u00ecm image MySQL tr\u00ean Docker Hub<\/td><\/tr><tr><td><code>docker pull mysql:8<\/code><\/td><td>T\u1ea3i image v\u1ec1 m\u00e1y<\/td><\/tr><tr><td><code>docker images<\/code><\/td><td>Li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 image \u0111\u00e3 t\u1ea3i<\/td><\/tr><tr><td><code>docker rmi mysql:8<\/code><\/td><td>Xo\u00e1 image MySQL phi\u00ean b\u1ea3n 8<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cac-thao-tac-v\u1edbi-docker-volumes\"><strong>C\u00e1c thao t\u00e1c v\u1edbi Docker Volumes<\/strong><\/h3>\n\n\n\n<p>Docker Volume l\u01b0u tr\u1eef d\u1eef li\u1ec7u b\u1ec1n v\u1eefng b\u00ean ngo\u00e0i container, gi\u00fap d\u1eef li\u1ec7u kh\u00f4ng b\u1ecb m\u1ea5t khi container b\u1ecb xo\u00e1 ho\u1eb7c t\u1ea1o l\u1ea1i. Docker h\u1ed7 tr\u1ee3 hai lo\u1ea1i volume ch\u00ednh \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-bind-mounts\"><strong>Bind mounts<\/strong><\/h4>\n\n\n\n<p>G\u1eafn k\u1ebft m\u1ed9t th\u01b0 m\u1ee5c c\u1ee5 th\u1ec3 tr\u00ean m\u00e1y ch\u1ee7 v\u00e0o container. Th\u00edch h\u1ee3p khi b\u1ea1n c\u1ea7n truy c\u1eadp ho\u1eb7c ch\u1ec9nh s\u1eeda d\u1eef li\u1ec7u ngay t\u1eeb m\u00e1y ch\u1ee7. Tuy nhi\u00ean, \u0111i\u1ec1u n\u00e0y c\u0169ng l\u00e0m m\u1ea5t \u0111i t\u00ednh c\u00f4 l\u1eadp c\u1ee7a container.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -v \/path\/to\/host:\/app\/data my-image<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-named-volumes\"><strong>Named volumes<\/strong><\/h4>\n\n\n\n<p>Docker t\u1ef1 qu\u1ea3n l\u00fd v\u1ecb tr\u00ed l\u01b0u tr\u1eef volume. Th\u01b0\u1eddng d\u00f9ng cho d\u1eef li\u1ec7u l\u00e2u d\u00e0i, an to\u00e0n v\u00e0 c\u00f4 l\u1eadp v\u1edbi h\u1ec7 th\u1ed1ng ch\u1ee7.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker volume create my-volume\n\ndocker run -v my-volume:\/app\/data my-image<\/code><\/pre>\n\n\n\n<p>M\u1ed9t s\u1ed1 l\u1ec7nh th\u01b0\u1eddng d\u00f9ng v\u1edbi volumes:<\/p>\n\n\n\n<p><strong>T\u1ea1o m\u1ed9t volume<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker volume create mydata<\/code><\/pre>\n\n\n\n<p><strong>Ch\u1ea1y container c\u00f3 g\u1eafn volume:&nbsp;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d -v mydata:\/data --name datatest busybox sleep 3600<\/code><\/pre>\n\n\n\n<p><strong>Ki\u1ec3m tra n\u1ed9i dung volume:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it datatest sh\n\ncd \/data\n\necho \"Hello volume\" &gt; note.txt<\/code><\/pre>\n\n\n\n<p><strong>Xem danh s\u00e1ch volume:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker volume ls<\/code><\/pre>\n\n\n\n<p><strong>Xo\u00e1 volume:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker volume rm mydata<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cac-thao-tac-v\u1edbi-docker-networks\"><strong>C\u00e1c thao t\u00e1c v\u1edbi&nbsp;Docker Networks<\/strong><\/h3>\n\n\n\n<p>Trong Docker, container th\u01b0\u1eddng c\u1ea7n giao ti\u1ebfp v\u1edbi nhau, \u0111\u1eb7c bi\u1ec7t khi b\u1ea1n ch\u1ea1y nhi\u1ec1u d\u1ecbch v\u1ee5 (nh\u01b0 web + database). Docker cung c\u1ea5p nhi\u1ec1u lo\u1ea1i m\u1ea1ng \u0111\u1ec3 ph\u1ee5c v\u1ee5 \u0111i\u1ec1u n\u00e0y.<\/p>\n\n\n\n<p><strong>Ki\u1ec3m tra m\u1ea1ng m\u1eb7c \u0111\u1ecbnh:&nbsp;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker network ls<\/code><\/pre>\n\n\n\n<p>M\u1ea1ng bridge l\u00e0 m\u1eb7c \u0111\u1ecbnh, t\u1ea1o s\u1eb5n khi b\u1ea1n c\u00e0i Docker.<\/p>\n\n\n\n<p><strong>T\u1ea1o m\u1ea1ng ri\u00eang:&nbsp;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker network create mynetwork<\/code><\/pre>\n\n\n\n<p><strong>Th\u1ef1c h\u00e0nh container giao ti\u1ebfp:&nbsp;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ch\u1ea1y 2 container trong c\u00f9ng network:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -dit --name container1 --network mynetwork busybox\n\ndocker run -dit --name container2 --network mynetwork busybox<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Truy c\u1eadp container2 v\u00e0 ping container1:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it container2 sh\n\nping container1<\/code><\/pre>\n\n\n\n<p>N\u1ebfu th\u1ea5y ph\u1ea3n h\u1ed3i 64 bytes from container1&#8230;, t\u1ee9c l\u00e0 container \u0111\u00e3 giao ti\u1ebfp \u0111\u01b0\u1ee3c v\u1edbi nhau qua t\u00ean hostname. \u0110\u00e2y l\u00e0 m\u1ed9t \u0111\u1eb7c \u0111i\u1ec3m m\u1ea1nh m\u1ebd c\u1ee7a Docker Network.<\/p>\n\n\n\n<p><strong>Xo\u00e1 m\u1ea1ng:&nbsp;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker network rm mynetwork<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-qu\u1ea3n-ly-\u1ee9ng-d\u1ee5ng-nhi\u1ec1u-container-v\u1edbi-docker-compose\"><strong>Qu\u1ea3n l\u00fd \u1ee9ng d\u1ee5ng nhi\u1ec1u container v\u1edbi Docker Compose<\/strong><\/h3>\n\n\n\n<p>Docker Compose l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 gi\u00fap b\u1ea1n \u0111\u1ecbnh ngh\u0129a v\u00e0 qu\u1ea3n l\u00fd nhi\u1ec1u container trong m\u1ed9t \u1ee9ng d\u1ee5ng b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng m\u1ed9t file c\u1ea5u h\u00ecnh duy nh\u1ea5t (<code>docker-compose.yml<\/code>). Thay v\u00ec ph\u1ea3i ch\u1ea1y t\u1eebng l\u1ec7nh docker run cho t\u1eebng container, b\u1ea1n ch\u1ec9 c\u1ea7n m\u1ed9t c\u00e2u l\u1ec7nh duy nh\u1ea5t \u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng.<\/p>\n\n\n\n<p>Trong th\u1ef1c t\u1ebf, c\u00e1c \u1ee9ng d\u1ee5ng th\u01b0\u1eddng \u0111\u01b0\u1ee3c chia th\u00e0nh nhi\u1ec1u th\u00e0nh ph\u1ea7n (microservices) nh\u01b0: frontend, backend, database, cache,&#8230; M\u1ed7i th\u00e0nh ph\u1ea7n s\u1ebd ch\u1ea1y trong m\u1ed9t container ri\u00eang bi\u1ec7t. Docker Compose gi\u00fap b\u1ea1n:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kh\u1edfi \u0111\u1ed9ng nhanh nhi\u1ec1u container ch\u1ec9 v\u1edbi m\u1ed9t l\u1ec7nh.<\/li>\n\n\n\n<li>Qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh t\u1eadp trung b\u1eb1ng file YAML.<\/li>\n\n\n\n<li>Thi\u1ebft l\u1eadp c\u00e1c m\u1ed1i quan h\u1ec7 ph\u1ee5 thu\u1ed9c gi\u1eefa c\u00e1c container.<\/li>\n\n\n\n<li>T\u00e1i s\u1eed d\u1ee5ng c\u1ea5u h\u00ecnh d\u1ec5 d\u00e0ng khi tri\u1ec3n khai tr\u00ean nhi\u1ec1u m\u00f4i tr\u01b0\u1eddng.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cu-phap-yaml-c\u01a1-b\u1ea3n\"><strong>C\u00fa ph\u00e1p YAML&nbsp;c\u01a1 b\u1ea3n<\/strong><\/h3>\n\n\n\n<p>Docker Compose s\u1eed d\u1ee5ng c\u00fa ph\u00e1p YAML \u0111\u1ec3 \u0111\u1ecbnh ngh\u0129a c\u1ea5u h\u00ecnh d\u1ecbch v\u1ee5. C\u1ea5u tr\u00fac c\u01a1 b\u1ea3n g\u1ed3m:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.8'\n\nservices:\n\n&nbsp;&nbsp;&lt;t\u00ean_service&gt;:\n\n&nbsp;&nbsp;&nbsp;&nbsp;image ho\u1eb7c build\n\n&nbsp;&nbsp;&nbsp;&nbsp;ports:\n\n&nbsp;&nbsp;&nbsp;&nbsp;- \"&lt;host_port&gt;:&lt;container_port&gt;\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;environment:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- KEY=value\n\n&nbsp;&nbsp;&nbsp;&nbsp;depends_on:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- &lt;t\u00ean_service_ph\u1ee5_thu\u1ed9c&gt;\n\nvolumes:\n\n&nbsp;&nbsp;&lt;t\u00ean_volume&gt;:<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-vi\u1ebft-docker-compose-yml-d\u1ea7u-tien\"><strong>Vi\u1ebft docker-compose.yml \u0111\u1ea7u ti\u00ean<\/strong><\/h4>\n\n\n\n<p>V\u00ed d\u1ee5 c\u00e1ch ch\u1ea1y \u1ee9ng d\u1ee5ng web k\u1ebft n\u1ed1i c\u01a1 s\u1edf d\u1eef li\u1ec7u PostgreSQL b\u1eb1ng Docker Compose:<\/p>\n\n\n\n<p><strong>B\u01b0\u1edbc 1: T\u1ea1o file docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.8'\n\nservices:\n\n&nbsp;&nbsp;web:\n\n&nbsp;&nbsp;&nbsp;&nbsp;build: .\n\n&nbsp;&nbsp;&nbsp;&nbsp;ports:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- \"3000:3000\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;depends_on:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- db\n\n&nbsp;&nbsp;db:\n\n&nbsp;&nbsp;&nbsp;&nbsp;image: postgres:13\n\n&nbsp;&nbsp;&nbsp;&nbsp;environment:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POSTGRES_PASSWORD: password\n\n&nbsp;&nbsp;&nbsp;&nbsp;volumes:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- db_data:\/var\/lib\/postgresql\/data\n\nvolumes:\n\n&nbsp;&nbsp;Db_data:<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>web<\/code>: service frontend, \u0111\u01b0\u1ee3c build t\u1eeb Dockerfile trong th\u01b0 m\u1ee5c hi\u1ec7n t\u1ea1i.<\/li>\n\n\n\n<li><code>db<\/code>: s\u1eed d\u1ee5ng image PostgreSQL 13, set m\u1eadt kh\u1ea9u v\u00e0 mount d\u1eef li\u1ec7u v\u00e0o volume.<\/li>\n\n\n\n<li><code>depends_on<\/code>: \u0111\u1ea3m b\u1ea3o web ch\u1ec9 ch\u1ea1y sau khi db \u0111\u00e3 \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o.<\/li>\n\n\n\n<li><code>volumes<\/code>: khai b\u00e1o volume t\u00ean db_data \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u b\u1ec1n v\u1eefng.<\/li>\n<\/ul>\n\n\n\n<p><strong>B\u01b0\u1edbc 2: Kh\u1edfi ch\u1ea1y to\u00e0n b\u1ed9 d\u1ecbch v\u1ee5<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up -d<\/code><\/pre>\n\n\n\n<p><strong>B\u01b0\u1edbc 3: Ki\u1ec3m tra ho\u1ea1t \u0111\u1ed9ng<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose ps &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Ki\u1ec3m tra container \u0111ang ch\u1ea1y\n\ndocker-compose logs web &nbsp; &nbsp; &nbsp; # Xem log container web\n\ndocker-compose restart db &nbsp; &nbsp; # Kh\u1edfi \u0111\u1ed9ng l\u1ea1i d\u1ecbch v\u1ee5 db<\/code><\/pre>\n\n\n\n<p><strong>B\u01b0\u1edbc 4: D\u1eebng v\u00e0 xo\u00e1 h\u1ec7 th\u1ed1ng<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose down &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # D\u1eebng container v\u00e0 network\n\ndocker-compose down -v&nbsp; &nbsp; &nbsp; &nbsp; # D\u1eebng v\u00e0 xo\u00e1 lu\u00f4n volume (d\u1eef li\u1ec7u db)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-docker-cheat-sheet-t\u1ed5ng-h\u1ee3p-cac-l\u1ec7nh-docker-c\u01a1-b\u1ea3n\"><span class=\"ez-toc-section\" id=\"Docker_Cheat_Sheet_Tong_hop_cac_lenh_Docker_co_ban\"><\/span><strong>Docker Cheat Sheet: T\u1ed5ng h\u1ee3p c\u00e1c l\u1ec7nh Docker c\u01a1 b\u1ea3n<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nhom-l\u1ec7nh-cai-d\u1eb7t-va-ki\u1ec3m-tra\"><strong>Nh\u00f3m l\u1ec7nh C\u00e0i \u0111\u1eb7t v\u00e0 ki\u1ec3m tra<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>C\u00fa ph\u00e1p<\/strong><\/td><td><strong>M\u1ee5c \u0111\u00edch<\/strong><\/td><\/tr><tr><td><code>docker --version<\/code><\/td><td>Ki\u1ec3m tra phi\u00ean b\u1ea3n Docker \u0111\u00e3 c\u00e0i<\/td><\/tr><tr><td><code>docker info<\/code><\/td><td>Xem th\u00f4ng tin h\u1ec7 th\u1ed1ng Docker<\/td><\/tr><tr><td><code>docker compose version<\/code><\/td><td>Ki\u1ec3m tra phi\u00ean b\u1ea3n Docker Compose<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nhom-l\u1ec7nh-thao-tac-v\u1edbi-image\"><strong>Nh\u00f3m l\u1ec7nh Thao t\u00e1c v\u1edbi Image<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>C\u00fa ph\u00e1p<\/strong><\/td><td><strong>M\u1ee5c \u0111\u00edch<\/strong><\/td><\/tr><tr><td><code>docker search &lt;image&gt;<\/code><\/td><td>T\u00ecm ki\u1ebfm image t\u1eeb Docker Hub<\/td><\/tr><tr><td><code>docker pull &lt;image&gt;<\/code><\/td><td>T\u1ea3i image t\u1eeb Docker Hub v\u1ec1 m\u00e1y local<\/td><\/tr><tr><td><code>docker images<\/code><\/td><td>Li\u1ec7t k\u00ea c\u00e1c image \u0111\u00e3 t\u1ea3i<\/td><\/tr><tr><td><code>docker rmi &lt;image&gt;<\/code><\/td><td>Xo\u00e1 image<\/td><\/tr><tr><td><code>docker build -t &lt;name&gt;:&lt;tag&gt; .<\/code><\/td><td>Build image t\u1eeb Dockerfile<\/td><\/tr><tr><td><code>docker tag &lt;image&gt; &lt;username&gt;\/&lt;repo&gt;:&lt;tag&gt;<\/code><\/td><td>Tag image \u0111\u1ec3 push l\u00ean Docker Hub<\/td><\/tr><tr><td><code>docker push &lt;username&gt;\/&lt;repo&gt;:&lt;tag&gt;<\/code><\/td><td>Push image l\u00ean Docker Hub<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nhom-l\u1ec7nh-ch\u1ea1y-container\"><strong>Nh\u00f3m l\u1ec7nh Ch\u1ea1y container<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>C\u00fa ph\u00e1p<\/strong><\/td><td><strong>M\u1ee5c \u0111\u00edch<\/strong><\/td><\/tr><tr><td><code>docker run &lt;image&gt;<\/code><\/td><td>Ch\u1ea1y container t\u1eeb image<\/td><\/tr><tr><td><code>docker run -d -p 8080:80 &lt;image&gt;<\/code><\/td><td>Ch\u1ea1y container n\u1ec1n, map port<\/td><\/tr><tr><td><code>docker run --name &lt;name&gt; &lt;image&gt;<\/code><\/td><td>G\u00e1n t\u00ean container<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nhom-l\u1ec7nh-qu\u1ea3n-ly-container\"><strong>Nh\u00f3m l\u1ec7nh Qu\u1ea3n l\u00fd container<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>C\u00fa ph\u00e1p<\/strong><\/td><td><strong>M\u1ee5c \u0111\u00edch<\/strong><\/td><\/tr><tr><td><code>docker ps<\/code><\/td><td>Li\u1ec7t k\u00ea container \u0111ang ch\u1ea1y<\/td><\/tr><tr><td><code>docker ps -a<\/code><\/td><td>Li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 container (k\u1ec3 c\u1ea3 \u0111\u00e3 d\u1eebng)<\/td><\/tr><tr><td><code>docker stop &lt;container&gt;<\/code><\/td><td>D\u1eebng container<\/td><\/tr><tr><td><code>docker start &lt;container&gt;<\/code><\/td><td>B\u1eaft \u0111\u1ea7u l\u1ea1i container<\/td><\/tr><tr><td><code>docker restart &lt;container&gt;<\/code><\/td><td>Kh\u1edfi \u0111\u1ed9ng l\u1ea1i container<\/td><\/tr><tr><td><code>docker rm &lt;container&gt;<\/code><\/td><td>Xo\u00e1 container<\/td><\/tr><tr><td><code>docker logs &lt;container&gt;<\/code><\/td><td>Xem log container<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nhom-l\u1ec7nh-docker-compose\"><strong>Nh\u00f3m l\u1ec7nh Docker Compose<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>C\u00fa ph\u00e1p<\/strong><\/td><td><strong>M\u1ee5c \u0111\u00edch<\/strong><\/td><\/tr><tr><td><code>docker-compose up -d<\/code><\/td><td>Ch\u1ea1y c\u00e1c service trong background<\/td><\/tr><tr><td><code>docker-compose down<\/code><\/td><td>D\u1eebng to\u00e0n b\u1ed9 service<\/td><\/tr><tr><td><code>docker-compose logs<\/code><\/td><td>Xem log c\u1ee7a t\u1ea5t c\u1ea3 service<\/td><\/tr><tr><td><code>docker-compose up --scale web=3<\/code><\/td><td>Scale service &#8220;web&#8221; l\u00ean 3 instance<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nhom-l\u1ec7nh-volumes\"><strong>Nh\u00f3m l\u1ec7nh Volumes<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>C\u00fa ph\u00e1p<\/strong><\/td><td><strong>M\u1ee5c \u0111\u00edch<\/strong><\/td><\/tr><tr><td><code>docker volume create &lt;name&gt;<\/code><\/td><td>T\u1ea1o volume m\u1edbi<\/td><\/tr><tr><td><code>docker volume ls<\/code><\/td><td>Li\u1ec7t k\u00ea c\u00e1c volume<\/td><\/tr><tr><td><code>docker volume inspect &lt;name&gt;<\/code><\/td><td>Xem chi ti\u1ebft volume<\/td><\/tr><tr><td><code>docker volume rm &lt;name&gt;<\/code><\/td><td>Xo\u00e1 volume<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nhom-l\u1ec7nh-network\"><strong>Nh\u00f3m l\u1ec7nh Network<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>C\u00fa ph\u00e1p<\/strong><\/td><td><strong>M\u1ee5c \u0111\u00edch<\/strong><\/td><\/tr><tr><td><code>docker network ls<\/code><\/td><td>Li\u1ec7t k\u00ea c\u00e1c network<\/td><\/tr><tr><td><code>docker network create &lt;name&gt;<\/code><\/td><td>T\u1ea1o network m\u1edbi<\/td><\/tr><tr><td><code>docker network inspect &lt;name&gt;<\/code><\/td><td>Xem chi ti\u1ebft network<\/td><\/tr><tr><td><code>docker network connect &lt;network&gt; &lt;container&gt;<\/code><\/td><td>K\u1ebft n\u1ed1i container v\u00e0o network<\/td><\/tr><tr><td><code>docker network disconnect &lt;network&gt; &lt;container&gt;<\/code><\/td><td>Ng\u1eaft k\u1ebft n\u1ed1i network<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u0110\u1ecdc chi ti\u1ebft h\u01a1n: <strong><a href=\"https:\/\/itviec.com\/blog\/tong-hop-docker-command\/\" target=\"_blank\" rel=\"noreferrer noopener\">T\u1ed5ng h\u1ee3p Docker command ph\u1ed5 bi\u1ebfn t\u1eeb c\u01a1 b\u1ea3n \u0111\u1ebfn n\u00e2ng ca<\/a><\/strong><a href=\"https:\/\/itviec.com\/blog\/tong-hop-docker-command\/\"><strong>o<\/strong><\/a><\/em><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-nh\u1eefng-sai-l\u1ea7m-khi-h\u1ecdc-docker-va-cach-kh\u1eafc-ph\u1ee5c\"><span class=\"ez-toc-section\" id=\"Nhung_sai_lam_khi_hoc_Docker_va_cach_khac_phuc\"><\/span><strong>Nh\u1eefng sai l\u1ea7m khi h\u1ecdc Docker v\u00e0 c\u00e1ch kh\u1eafc ph\u1ee5c<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-s\u1eed-d\u1ee5ng-tag-latest-trong-moi-tr\u01b0\u1eddng-production\"><strong>S\u1eed d\u1ee5ng tag latest trong m\u00f4i tr\u01b0\u1eddng production<\/strong><\/h3>\n\n\n\n<p>Sai l\u1ea7m: D\u00f9ng FROM ubuntu:latest ho\u1eb7c t\u01b0\u01a1ng t\u1ef1 khi\u1ebfn image kh\u00f4ng \u1ed5n \u0111\u1ecbnh v\u00ec tag latest c\u00f3 th\u1ec3 thay \u0111\u1ed5i theo th\u1eddi gian.<\/p>\n\n\n\n<p>C\u00e1ch kh\u1eafc ph\u1ee5c:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ch\u1ec9 \u0111\u1ecbnh r\u00f5 phi\u00ean b\u1ea3n (v\u00ed d\u1ee5 <code>ubuntu:22.04<\/code> ho\u1eb7c s\u1eed d\u1ee5ng <code>digest sha256<\/code>) \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh nh\u1ea5t qu\u00e1n khi build v\u00e0 deploy<\/li>\n\n\n\n<li>S\u1eed d\u1ee5ng image digest \u0111\u1ec3 pin ch\u00ednh x\u00e1c: <code>ubuntu@sha256:abc123<\/code>\u2026<\/li>\n\n\n\n<li>Thi\u1ebft l\u1eadp dependency pinning trong CI\/CD pipeline<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ea1o-image-qua-l\u1edbn\"><strong>T\u1ea1o image qu\u00e1 l\u1edbn<\/strong><\/h3>\n\n\n\n<p>Sai l\u1ea7m: C\u00e0i \u0111\u1eb7t nh\u1eefng g\u00f3i kh\u00f4ng c\u1ea7n thi\u1ebft (gcc, curl, editors&#8230;) trong image cu\u1ed1i c\u00f9ng khi\u1ebfn k\u00edch th\u01b0\u1edbc t\u0103ng b\u1ea5t th\u01b0\u1eddng.<\/p>\n\n\n\n<p>C\u00e1ch kh\u1eafc ph\u1ee5c:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ch\u1ecdn base image nh\u1eb9 nh\u01b0 alpine ho\u1eb7c c\u00e1c <code>image -slim<\/code>.<\/li>\n\n\n\n<li>D\u00f9ng <code>multi-stage build<\/code> \u0111\u1ec3 ch\u1ec9 gi\u1eef ph\u1ea7n c\u1ea7n thi\u1ebft cho production.<\/li>\n\n\n\n<li>X\u00f3a cache v\u00e0 t\u1ec7p t\u1ea1m trong c\u00f9ng m\u1ed9t RUN \u0111\u1ec3 tr\u00e1nh t\u00edch t\u1ee5 d\u1eef li\u1ec7u d\u01b0 th\u1eeba<\/li>\n\n\n\n<li>S\u1eed d\u1ee5ng <code>.dockerignore<\/code> \u0111\u1ec3 lo\u1ea1i b\u1ecf files kh\u00f4ng c\u1ea7n thi\u1ebft<\/li>\n\n\n\n<li>Combine c\u00e1c RUN commands: <code>RUN apt-get update &amp;&amp; apt-get install -y package &amp;&amp; apt-get clean &amp;&amp; rm -rf \/var\/lib\/apt\/lists\/*<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-xay-d\u1ef1ng-dockerfile-theo-ki\u1ec3u-nhi\u1ec1u-t\u1ea7ng-l\u1ec7nh-khong-t\u1ed1i-\u01b0u\"><strong>X\u00e2y d\u1ef1ng Dockerfile theo ki\u1ec3u nhi\u1ec1u t\u1ea7ng l\u1ec7nh kh\u00f4ng t\u1ed1i \u01b0u<\/strong><\/h3>\n\n\n\n<p>Sai l\u1ea7m: Chia nh\u1ecf c\u00e1c l\u1ec7nh th\u00e0nh nhi\u1ec1u t\u1ea7ng (RUN, COPY, ADD&#8230;), g\u00e2y build ch\u1eadm v\u00e0 image kh\u00f4ng c\u1ea7n thi\u1ebft.<\/p>\n\n\n\n<p>C\u00e1ch kh\u1eafc ph\u1ee5c:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>G\u1ed9p logic trong c\u00f9ng m\u1ed9t layer (<code>RUN apt-get &amp;&amp; rm -rf<\/code>).<\/li>\n\n\n\n<li>S\u1eed d\u1ee5ng <code>COPY<\/code> \u0111\u00fang n\u01a1i c\u1ea7n thi\u1ebft, tr\u00e1nh ch\u00e9p to\u00e0n b\u1ed9 m\u00e3 s\u1edbm \u0111\u1ec3 t\u1eadn d\u1ee5ng cache build hi\u1ec7u qu\u1ea3<\/li>\n\n\n\n<li>S\u1eafp x\u1ebfp instructions theo \u0111\u1ed9 \u01b0u ti\u00ean cache (\u00edt thay \u0111\u1ed5i \u2192 nhi\u1ec1u thay \u0111\u1ed5i)<\/li>\n\n\n\n<li>Copy requirements files tr\u01b0\u1edbc, install dependencies, r\u1ed3i m\u1edbi copy source code<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ch\u1ea1y-container-d\u01b0\u1edbi-quy\u1ec1n-root\"><strong>Ch\u1ea1y container d\u01b0\u1edbi quy\u1ec1n root<\/strong><\/h3>\n\n\n\n<p>Sai l\u1ea7m: Ch\u1ea1y \u1ee9ng d\u1ee5ng b\u00ean trong container v\u1edbi root (m\u1eb7c \u0111\u1ecbnh), v\u1eeba kh\u00f4ng an to\u00e0n l\u1ea1i d\u1ec5 b\u1ecb t\u1ea5n c\u00f4ng.<\/p>\n\n\n\n<p>C\u00e1ch kh\u1eafc ph\u1ee5c:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>T\u1ea1o user kh\u00f4ng ph\u1ea3i root trong Dockerfile v\u00e0 d\u00f9ng USER \u0111\u1ec3 chuy\u1ec3n quy\u1ec1n.<\/li>\n\n\n\n<li>Kh\u00f4ng d\u00f9ng <code>--privileged<\/code> ho\u1eb7c th\u00eam th\u1eeba quy\u1ec1n n\u1ebfu kh\u00f4ng th\u1ef1c s\u1ef1 c\u1ea7n thi\u1ebft<\/li>\n\n\n\n<li>S\u1eed d\u1ee5ng <code>--user flag<\/code> khi ch\u1ea1y container<\/li>\n\n\n\n<li>Xem x\u00e9t rootless containers cho security t\u1ed1i \u0111a<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-l\u01b0u-tr\u1eef-d\u1eef-li\u1ec7u-tr\u1ef1c-ti\u1ebfp-trong-container-ma-khong-dung-volume\"><strong>L\u01b0u tr\u1eef d\u1eef li\u1ec7u tr\u1ef1c ti\u1ebfp trong container m\u00e0 kh\u00f4ng d\u00f9ng volume<\/strong><\/h3>\n\n\n\n<p>Sai l\u1ea7m: Ghi log, database ho\u1eb7c d\u1eef li\u1ec7u l\u00ean h\u1ec7 th\u1ed1ng file trong container, d\u1ec5 m\u1ea5t khi container b\u1ecb x\u00f3a ho\u1eb7c c\u1eadp nh\u1eadt.<\/p>\n\n\n\n<p>C\u00e1ch kh\u1eafc ph\u1ee5c:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>D\u00f9ng Docker volume \u0111\u1ec3 gi\u1eef d\u1eef li\u1ec7u b\u00ean ngo\u00e0i container.<\/li>\n\n\n\n<li>Mount th\u01b0 m\u1ee5c data v\u00e0o volume \u0111\u1ec3 b\u1ea3o to\u00e0n d\u1eef li\u1ec7u khi container thay \u0111\u1ed5i, \u0111\u1ed3ng th\u1eddi d\u1ec5 backup v\u00e0 di chuy\u1ec3n.<\/li>\n\n\n\n<li>Ph\u00e2n bi\u1ec7t r\u00f5 stateless vs stateful components<\/li>\n\n\n\n<li>S\u1eed d\u1ee5ng named volumes thay v\u00ec bind mounts khi c\u00f3 th\u1ec3<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-cau-h\u1ecfi-th\u01b0\u1eddng-g\u1eb7p-khi-h\u1ecdc-docker\"><span class=\"ez-toc-section\" id=\"Cac_cau_hoi_thuong_gap_khi_hoc_Docker\"><\/span><strong>C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p khi h\u1ecdc Docker<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-co-dung-d\u01b0\u1ee3c-trong-moi-tr\u01b0\u1eddng-production-khong\"><strong>Docker c\u00f3 d\u00f9ng \u0111\u01b0\u1ee3c trong m\u00f4i tr\u01b0\u1eddng production kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<p>C\u00f3, Docker ho\u00e0n to\u00e0n c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong m\u00f4i tr\u01b0\u1eddng production v\u00e0 th\u1ef1c t\u1ebf \u0111\u00e3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng r\u1ed9ng r\u00e3i trong c\u00e1c h\u1ec7 th\u1ed1ng hi\u1ec7n \u0111\u1ea1i b\u1edfi c\u00e1c c\u00f4ng ty l\u1edbn nh\u01b0 Netflix, Spotify, Airbnb, Uber. Khi h\u1ecdc qua docker tutorial, b\u1ea1n s\u1ebd th\u1ea5y Docker gi\u00fap \u0111\u00f3ng g\u00f3i \u1ee9ng d\u1ee5ng m\u1ed9t c\u00e1ch nh\u1ea5t qu\u00e1n, d\u1ec5 tri\u1ec3n khai v\u00e0 m\u1edf r\u1ed9ng.<\/p>\n\n\n\n<p>Tuy nhi\u00ean, \u0111\u1ec3 d\u00f9ng hi\u1ec7u qu\u1ea3 trong production, c\u1ea7n k\u1ebft h\u1ee3p v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 nh\u01b0 Docker Compose, orchestration (nh\u01b0 Kubernetes), v\u00e0 gi\u1ea3i ph\u00e1p l\u01b0u tr\u1eef, gi\u00e1m s\u00e1t ph\u00f9 h\u1ee3p.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-khac-gi-so-v\u1edbi-may-\u1ea3o\"><strong>Docker kh\u00e1c g\u00ec so v\u1edbi m\u00e1y \u1ea3o?<\/strong><\/h3>\n\n\n\n<p>Docker kh\u00e1c v\u1edbi m\u00e1y \u1ea3o \u1edf ch\u1ed7 n\u00f3 s\u1eed d\u1ee5ng container \u0111\u1ec3 chia s\u1ebb kernel c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh, thay v\u00ec t\u1ea1o m\u1ed9t h\u1ec7 \u0111i\u1ec1u h\u00e0nh ri\u00eang bi\u1ec7t nh\u01b0 m\u00e1y \u1ea3o. Nh\u1edd v\u1eady, Docker nh\u1eb9 h\u01a1n, kh\u1edfi \u0111\u1ed9ng nhanh h\u01a1n v\u00e0 ti\u00eau t\u1ed1n \u00edt t\u00e0i nguy\u00ean h\u01a1n.<\/p>\n\n\n\n<p>Khi h\u1ecdc docker tutorial, b\u1ea1n s\u1ebd th\u1ea5y Docker ph\u00f9 h\u1ee3p cho vi\u1ec7c ph\u00e1t tri\u1ec3n v\u00e0 tri\u1ec3n khai \u1ee9ng d\u1ee5ng linh ho\u1ea1t m\u00e0 kh\u00f4ng c\u1ea7n gi\u1ea3 l\u1eadp to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-lam-sao-qu\u1ea3n-ly-d\u1eef-li\u1ec7u-lau-dai-khi-container-b\u1ecb-xoa\"><strong>L\u00e0m sao qu\u1ea3n l\u00fd d\u1eef li\u1ec7u l\u00e2u d\u00e0i khi container b\u1ecb x\u00f3a?<\/strong><\/h3>\n\n\n\n<p>Trong qu\u00e1 tr\u00ecnh h\u1ecdc docker tutorial, b\u1ea1n s\u1ebd bi\u1ebft r\u1eb1ng container khi b\u1ecb x\u00f3a th\u00ec d\u1eef li\u1ec7u b\u00ean trong c\u0169ng m\u1ea5t n\u1ebfu kh\u00f4ng \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef \u0111\u00fang c\u00e1ch.<\/p>\n\n\n\n<p>\u0110\u1ec3 qu\u1ea3n l\u00fd d\u1eef li\u1ec7u l\u00e2u d\u00e0i, Docker cung c\u1ea5p c\u00e1c gi\u1ea3i ph\u00e1p nh\u01b0 volume v\u00e0 bind mount \u0111\u1ec3 l\u01b0u d\u1eef li\u1ec7u b\u00ean ngo\u00e0i container. Nh\u1edd \u0111\u00f3, d\u00f9 container c\u00f3 b\u1ecb d\u1eebng hay x\u00f3a, d\u1eef li\u1ec7u v\u1eabn \u0111\u01b0\u1ee3c gi\u1eef nguy\u00ean v\u00e0 t\u00e1i s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c khi kh\u1edfi ch\u1ea1y l\u1ea1i.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-co-tich-h\u1ee3p-t\u1ed1t-v\u1edbi-ci-cd-khong\"><strong>Docker c\u00f3 t\u00edch h\u1ee3p t\u1ed1t v\u1edbi CI\/CD kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<p>C\u00f3, Docker t\u00edch h\u1ee3p r\u1ea5t t\u1ed1t v\u1edbi quy tr\u00ecnh CI\/CD nh\u1edd kh\u1ea3 n\u0103ng t\u1ea1o m\u00f4i tr\u01b0\u1eddng build v\u00e0 deploy nh\u1ea5t qu\u00e1n.<\/p>\n\n\n\n<p>Trong qu\u00e1 tr\u00ecnh h\u1ecdc docker tutorial, b\u1ea1n s\u1ebd th\u1ea5y Docker th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u00e1c pipeline \u0111\u1ec3 build image, ch\u1ea1y test t\u1ef1 \u0111\u1ed9ng v\u00e0 tri\u1ec3n khai \u1ee9ng d\u1ee5ng. S\u1ef1 linh ho\u1ea1t v\u00e0 kh\u1ea3 n\u0103ng t\u1ef1 \u0111\u1ed9ng h\u00f3a cao c\u1ee7a Docker gi\u00fap r\u00fat ng\u1eafn th\u1eddi gian ph\u00e1t h\u00e0nh ph\u1ea7n m\u1ec1m v\u00e0 gi\u1ea3m thi\u1ec3u l\u1ed7i m\u00f4i tr\u01b0\u1eddng.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-k\u1ebft\"><span class=\"ez-toc-section\" id=\"Tong_ket\"><\/span><strong>T\u1ed5ng k\u1ebft<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Qua b\u00e0i vi\u1ebft n\u00e0y, b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c h\u01b0\u1edbng d\u1eabn chi ti\u1ebft t\u1eeb kh\u00e1i ni\u1ec7m c\u01a1 b\u1ea3n \u0111\u1ebfn c\u00e1ch s\u1eed d\u1ee5ng Docker trong th\u1ef1c t\u1ebf th\u00f4ng qua m\u1ed9t docker tutorial \u0111\u1ea7y \u0111\u1ee7 v\u00e0 d\u1ec5 hi\u1ec3u. Vi\u1ec7c th\u00e0nh th\u1ea1o Docker s\u1ebd gi\u00fap b\u1ea1n tri\u1ec3n khai \u1ee9ng d\u1ee5ng nhanh ch\u00f3ng, \u0111\u1ed3ng nh\u1ea5t m\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n v\u00e0 n\u00e2ng cao hi\u1ec7u qu\u1ea3 l\u00e0m vi\u1ec7c trong c\u00e1c d\u1ef1 \u00e1n ph\u1ea7n m\u1ec1m. H\u00e3y ti\u1ebfp t\u1ee5c th\u1ef1c h\u00e0nh, kh\u00e1m ph\u00e1 th\u00eam c\u00e1c t\u00ednh n\u0103ng n\u00e2ng cao nh\u01b0 Docker Compose v\u00e0 Kubernetes \u0111\u1ec3 m\u1edf r\u1ed9ng k\u1ef9 n\u0103ng l\u00e0m vi\u1ec7c v\u1edbi container.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u1ebfu b\u1ea1n \u0111ang c\u1ea7n m\u1ed9t Docker tutorial d\u1ec5 hi\u1ec3u, c\u00f3 h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng r\u00f5 r\u00e0ng t\u1eeb l\u00fd thuy\u1ebft \u0111\u1ebfn th\u1ef1c h\u00e0nh, th\u00ec b\u00e0i vi\u1ebft n\u00e0y l\u00e0 d\u00e0nh cho b\u1ea1n. B\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c h\u01b0\u1edbng d\u1eabn t\u1eebng b\u01b0\u1edbc t\u1eeb t\u00ecm hi\u1ec3u c\u00e1c kh\u00e1i ni\u1ec7m c\u01a1 b\u1ea3n, h\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t, build, ch\u1ea1y v\u00e0 qu\u1ea3n l\u00fd container. [&hellip;]<\/p>\n","protected":false},"author":214,"featured_media":90253,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109],"tags":[10113,10121],"class_list":["post-89200","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it","tag-devops","tag-docker"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Docker Tutorial cheat sheet: Chi ti\u1ebft c\u00e1ch d\u00f9ng l\u1ec7nh Docker t\u1eeb A-Z - ITviec Blog<\/title>\n<meta name=\"description\" content=\"L\u01b0u ngay Docker tutorial to\u00e0n di\u1ec7n t\u1eeb c\u00e0i \u0111\u1eb7t, build image, ch\u1ea1y &amp; qu\u1ea3n l\u00fd container, Docker Compose, volumes &amp; networks,... k\u00e8m v\u00ed d\u1ee5.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Tutorial cheat sheet: Chi ti\u1ebft c\u00e1ch d\u00f9ng l\u1ec7nh Docker t\u1eeb A-Z\" \/>\n<meta property=\"og:description\" content=\"N\u1ebfu b\u1ea1n \u0111ang c\u1ea7n m\u1ed9t Docker tutorial d\u1ec5 hi\u1ec3u, c\u00f3 h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng r\u00f5 r\u00e0ng t\u1eeb l\u00fd thuy\u1ebft \u0111\u1ebfn th\u1ef1c h\u00e0nh, th\u00ec b\u00e0i vi\u1ebft n\u00e0y l\u00e0 d\u00e0nh cho b\u1ea1n. B\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c h\u01b0\u1edbng\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-31T14:37:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T14:48:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/docker-tutorial-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"421\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Hi\u1ebfu Phan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hi\u1ebfu Phan\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Docker Tutorial cheat sheet: Chi ti\u1ebft c\u00e1ch d\u00f9ng l\u1ec7nh Docker t\u1eeb A-Z - ITviec Blog","description":"L\u01b0u ngay Docker tutorial to\u00e0n di\u1ec7n t\u1eeb c\u00e0i \u0111\u1eb7t, build image, ch\u1ea1y & qu\u1ea3n l\u00fd container, Docker Compose, volumes & networks,... k\u00e8m v\u00ed d\u1ee5.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/","og_locale":"vi_VN","og_type":"article","og_title":"Docker Tutorial cheat sheet: Chi ti\u1ebft c\u00e1ch d\u00f9ng l\u1ec7nh Docker t\u1eeb A-Z","og_description":"N\u1ebfu b\u1ea1n \u0111ang c\u1ea7n m\u1ed9t Docker tutorial d\u1ec5 hi\u1ec3u, c\u00f3 h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng r\u00f5 r\u00e0ng t\u1eeb l\u00fd thuy\u1ebft \u0111\u1ebfn th\u1ef1c h\u00e0nh, th\u00ec b\u00e0i vi\u1ebft n\u00e0y l\u00e0 d\u00e0nh cho b\u1ea1n. B\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c h\u01b0\u1edbng","og_url":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2025-07-31T14:37:55+00:00","article_modified_time":"2025-07-31T14:48:14+00:00","og_image":[{"width":800,"height":421,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/docker-tutorial-scaled.png","type":"image\/png"}],"author":"Hi\u1ebfu Phan","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Hi\u1ebfu Phan","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"19 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/"},"author":{"name":"Hi\u1ebfu Phan","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/d9f4dfc3237d95eb1549e5adb2ede904"},"headline":"Docker Tutorial cheat sheet: Chi ti\u1ebft c\u00e1ch d\u00f9ng l\u1ec7nh Docker t\u1eeb A-Z","datePublished":"2025-07-31T14:37:55+00:00","dateModified":"2025-07-31T14:48:14+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/"},"wordCount":5119,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/docker-tutorial-scaled.png","keywords":["devops","Docker"],"articleSection":["Chuy\u00ean m\u00f4n IT"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/","url":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/","name":"Docker Tutorial cheat sheet: Chi ti\u1ebft c\u00e1ch d\u00f9ng l\u1ec7nh Docker t\u1eeb A-Z - ITviec Blog","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/docker-tutorial-scaled.png","datePublished":"2025-07-31T14:37:55+00:00","dateModified":"2025-07-31T14:48:14+00:00","description":"L\u01b0u ngay Docker tutorial to\u00e0n di\u1ec7n t\u1eeb c\u00e0i \u0111\u1eb7t, build image, ch\u1ea1y & qu\u1ea3n l\u00fd container, Docker Compose, volumes & networks,... k\u00e8m v\u00ed d\u1ee5.","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/docker-tutorial-scaled.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/docker-tutorial-scaled.png","width":800,"height":421,"caption":"docker tutorial - itviec blog"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/huong-dan-hoc-docker-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"Docker Tutorial cheat sheet: Chi ti\u1ebft c\u00e1ch d\u00f9ng l\u1ec7nh Docker t\u1eeb A-Z"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/d9f4dfc3237d95eb1549e5adb2ede904","name":"Hi\u1ebfu Phan","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/phan-trung-hieu-author-e1709881921227-100x100.jpg","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/phan-trung-hieu-author-e1709881921227-100x100.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/phan-trung-hieu-author-e1709881921227-100x100.jpg","caption":"Hi\u1ebfu Phan"},"url":"https:\/\/itviec.com\/blog\/author\/hieu-phan\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/89200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/214"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=89200"}],"version-history":[{"count":5,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/89200\/revisions"}],"predecessor-version":[{"id":90258,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/89200\/revisions\/90258"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/90253"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=89200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=89200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=89200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}