{"id":88706,"date":"2025-06-30T15:21:34","date_gmt":"2025-06-30T08:21:34","guid":{"rendered":"https:\/\/itviec.com\/blog\/?p=88706"},"modified":"2025-06-30T15:53:12","modified_gmt":"2025-06-30T08:53:12","slug":"docker-image-la-gi","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/","title":{"rendered":"Docker Image l\u00e0 g\u00ec: C\u00e1c c\u00e1ch t\u1ed1t nh\u1ea5t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a Docker Image"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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\/docker-image-la-gi\/#Tong_quan_Docker_Image_la_gi\" >T\u1ed5ng quan Docker Image l\u00e0 g\u00ec<\/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\/docker-image-la-gi\/#Cach_thuc_hoat_dong_cua_Docker_Image\" >C\u00e1ch th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Docker Image&nbsp;<\/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\/docker-image-la-gi\/#Cac_lenh_de_quan_ly_va_su_dung_Docker_Image_hieu_qua\" >C\u00e1c l\u1ec7nh \u0111\u1ec3 qu\u1ea3n l\u00fd v\u00e0 s\u1eed d\u1ee5ng Docker Image hi\u1ec7u qu\u1ea3<\/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\/docker-image-la-gi\/#Tong_hop_cac_lenh_co_ban_dung_de_quan_ly_Docker_Image\" >T\u1ed5ng h\u1ee3p c\u00e1c l\u1ec7nh c\u01a1 b\u1ea3n d\u00f9ng \u0111\u1ec3 qu\u1ea3n l\u00fd Docker Image<\/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\/docker-image-la-gi\/#Cac_cach_toi_uu_hoa_Docker_Image_tot_nhat\" >C\u00e1c c\u00e1ch t\u1ed1i \u01b0u h\u00f3a Docker Image t\u1ed1t nh\u1ea5t<\/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\/docker-image-la-gi\/#Cau_hoi_thuong_gap_ve_Docker_Image\" >C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Docker Image<\/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\/docker-image-la-gi\/#Tong_ket\" >T\u1ed5ng k\u1ebft<\/a><\/li><\/ul><\/nav><\/div>\n\n<p><strong><em>N\u1ebfu b\u1ea1n t\u1eebng nghe \u0111\u1ebfn vi\u1ec7c &#8220;\u0111\u00f3ng g\u00f3i&#8221; \u1ee9ng d\u1ee5ng \u0111\u1ec3 ch\u1ea1y \u1edf b\u1ea5t c\u1ee9 \u0111\u00e2u, th\u00ec ch\u00ednh Docker Image l\u00e0 th\u1ee9 l\u00e0m n\u00ean \u0111i\u1ec1u \u0111\u00f3. Docker Image l\u00e0 n\u1ec1n t\u1ea3ng c\u1ed1t l\u00f5i gi\u00fap container ho\u1ea1t \u0111\u1ed9ng. Hi\u1ec3u r\u00f5 Docker Image l\u00e0 g\u00ec s\u1ebd ch\u00ednh l\u00e0 b\u01b0\u1edbc \u0111\u1ea7u gi\u00fap b\u1ea1n ti\u1ebfp c\u1eadn d\u1ec5 d\u00e0ng h\u01a1n v\u1edbi th\u1ebf gi\u1edbi container h\u00f3a.<\/em><\/strong><\/p>\n\n\n\n<p>\u0110\u1ecdc b\u00e0i vi\u1ebft sau \u0111\u1ec3 hi\u1ec3u h\u01a1n v\u1ec1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Docker Image l\u00e0 g\u00ec?<\/li>\n\n\n\n<li>C\u1ea5u tr\u00fac c\u1ee7a Docker Image<\/li>\n\n\n\n<li>L\u1ee3i \u00edch khi s\u1eed d\u1ee5ng Docker Image<\/li>\n\n\n\n<li>C\u00e1ch th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Docker Image<\/li>\n\n\n\n<li>Qu\u1ea3n l\u00fd v\u00e0 s\u1eed d\u1ee5ng Docker Image<\/li>\n\n\n\n<li>C\u00e1ch t\u1ed1i \u01b0u ho\u00e1 Docker Image<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-quan-docker-image-la-gi\"><span class=\"ez-toc-section\" id=\"Tong_quan_Docker_Image_la_gi\"><\/span><strong>T\u1ed5ng quan Docker Image l\u00e0 g\u00ec<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-image-la-gi\"><strong>Docker Image l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n<p>Docker Image l\u00e0 m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c file, th\u01b0 vi\u1ec7n, m\u00e3 ngu\u1ed3n v\u00e0 h\u01b0\u1edbng d\u1eabn c\u1ea5u h\u00ecnh \u0111\u01b0\u1ee3c \u0111\u00f3ng g\u00f3i s\u1eb5n \u0111\u1ec3 t\u1ea1o ra c\u00e1c container trong m\u00f4i tr\u01b0\u1eddng Docker. B\u1ea1n c\u00f3 th\u1ec3 h\u00ecnh dung n\u00f3 nh\u01b0 m\u1ed9t b\u1ea3n sao ch\u1ee5p (snapshot) c\u1ee7a m\u1ed9t h\u1ec7 \u0111i\u1ec1u h\u00e0nh thu nh\u1ecf, n\u01a1i m\u1ecdi th\u1ee9 \u0111\u00e3 \u0111\u01b0\u1ee3c chu\u1ea9n b\u1ecb s\u1eb5n \u0111\u1ec3 \u1ee9ng d\u1ee5ng c\u00f3 th\u1ec3 ch\u1ea1y ngay l\u1eadp t\u1ee9c. Docker Image c\u00f3 t\u00ednh ch\u1ea5t ch\u1ec9 \u0111\u1ecdc (read-only), ngh\u0129a l\u00e0 n\u1ed9i dung c\u1ee7a ch\u00fang kh\u00f4ng th\u1ec3 thay \u0111\u1ed5i sau khi \u0111\u01b0\u1ee3c t\u1ea1o ra.<\/p>\n\n\n\n<p>M\u1ed7i khi b\u1ea1n ch\u1ea1y m\u1ed9t container, Docker s\u1ebd s\u1eed d\u1ee5ng Docker Image l\u00e0m n\u1ec1n t\u1ea3ng \u0111\u1ec3 t\u1ea1o ra m\u00f4i tr\u01b0\u1eddng th\u1ef1c thi ri\u00eang bi\u1ec7t. \u0110i\u1ec1u n\u00e0y gi\u00fap \u0111\u1ea3m b\u1ea3o r\u1eb1ng \u1ee9ng d\u1ee5ng lu\u00f4n ch\u1ea1y nh\u1ea5t qu\u00e1n tr\u00ean m\u1ecdi h\u1ec7 th\u1ed1ng, b\u1ea5t k\u1ec3 l\u00e0 m\u00e1y t\u00ednh c\u00e1 nh\u00e2n, m\u00e1y ch\u1ee7 hay n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y. Docker Image kh\u00f4ng ch\u1ec9 h\u1ed7 tr\u1ee3 t\u0103ng t\u1ed1c qu\u00e1 tr\u00ecnh tri\u1ec3n khai m\u00e0 c\u00f2n g\u00f3p ph\u1ea7n chu\u1ea9n h\u00f3a v\u00e0 t\u1ef1 \u0111\u1ed9ng h\u00f3a trong 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><em>\u0110\u1ecdc th\u00eam: <strong><a href=\"https:\/\/itviec.com\/blog\/docker-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker l\u00e0 g\u00ec? H\u00e3y \u0111\u1ec3 Senior DevOps Engineer tr\u1ea3 l\u1eddi cho b\u1ea1n!<\/a><\/strong><\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-c\u1ea5u-truc-c\u1ee7a-docker-image-nbsp\"><strong>C\u1ea5u tr\u00fac c\u1ee7a Docker Image&nbsp;<\/strong><\/h3>\n\n\n\n<p>V\u1ec1 b\u1ea3n ch\u1ea5t, Docker Image \u0111\u01b0\u1ee3c t\u1ea1o th\u00e0nh t\u1eeb nhi\u1ec1u l\u1edbp (layer) x\u1ebfp ch\u1ed3ng l\u00ean nhau. M\u1ed7i layer l\u00e0 k\u1ebft qu\u1ea3 c\u1ee7a m\u1ed9t l\u1ec7nh trong <strong><a href=\"https:\/\/itviec.com\/blog\/dockerfile-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Dockerfile<\/a><\/strong>, ch\u1eb3ng h\u1ea1n nh\u01b0 <code>RUN<\/code>, <code>COPY<\/code> hay <code>ADD<\/code>. Layer \u0111\u1ea7u ti\u00ean th\u01b0\u1eddng l\u00e0 h\u1ec7 \u0111i\u1ec1u h\u00e0nh c\u01a1 b\u1ea3n (v\u00ed d\u1ee5: Alpine, Ubuntu), v\u00e0 c\u00e1c layer ti\u1ebfp theo s\u1ebd th\u00eam d\u1ea7n c\u00e1c ph\u1ea7n nh\u01b0 th\u01b0 vi\u1ec7n, m\u00e3 ngu\u1ed3n, file c\u1ea5u h\u00ecnh,\u2026<\/p>\n\n\n\n<p>M\u1ed9t \u0111\u1eb7c \u0111i\u1ec3m quan tr\u1ecdng l\u00e0 m\u1ed7i layer ch\u1ec9 l\u01b0u tr\u1eef s\u1ef1 thay \u0111\u1ed5i so v\u1edbi layer tr\u01b0\u1edbc \u0111\u00f3 v\u00e0 c\u00f3 t\u00ednh ch\u1ea5t kh\u00f4ng th\u1ec3 thay \u0111\u1ed5i (immutable). Docker s\u1eed d\u1ee5ng c\u01a1 ch\u1ebf copy-on-write, ngh\u0129a l\u00e0 khi container ch\u1ea1y v\u00e0 c\u1ea7n thay \u0111\u1ed5i file t\u1eeb image, n\u00f3 s\u1ebd t\u1ea1o b\u1ea3n sao c\u1ee7a file \u0111\u00f3 thay v\u00ec thay \u0111\u1ed5i tr\u1ef1c ti\u1ebfp file g\u1ed1c trong image.<\/p>\n\n\n\n<p>M\u1ed7i khi b\u1ea1n build m\u1ed9t Docker Image m\u1edbi, Docker s\u1ebd ki\u1ec3m tra xem layer n\u00e0o \u0111\u00e3 t\u1ed3n t\u1ea1i tr\u01b0\u1edbc \u0111\u00f3 \u0111\u1ec3 t\u00e1i s\u1eed d\u1ee5ng, gi\u00fap ti\u1ebft ki\u1ec7m th\u1eddi gian v\u00e0 dung l\u01b0\u1ee3ng l\u01b0u tr\u1eef. Nh\u1edd c\u00e1ch t\u1ed5 ch\u1ee9c theo t\u1eebng l\u1edbp nh\u01b0 v\u1eady, Docker kh\u00f4ng ch\u1ec9 t\u0103ng hi\u1ec7u su\u1ea5t m\u00e0 c\u00f2n gi\u00fap vi\u1ec7c c\u1eadp nh\u1eadt ho\u1eb7c thay \u0111\u1ed5i m\u1ed9t ph\u1ea7n trong Image tr\u1edf n\u00ean linh ho\u1ea1t v\u00e0 d\u1ec5 d\u00e0ng h\u01a1n. \u0110\u00e2y c\u0169ng l\u00e0 l\u00fd do v\u00ec sao Docker Image tr\u1edf th\u00e0nh c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd trong vi\u1ec7c \u0111\u00f3ng g\u00f3i v\u00e0 tri\u1ec3n khai \u1ee9ng d\u1ee5ng.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-l\u1ee3i-ich-khi-s\u1eed-d\u1ee5ng-docker-image-nbsp\"><strong>L\u1ee3i \u00edch khi s\u1eed d\u1ee5ng Docker Image&nbsp;<\/strong><\/h3>\n\n\n\n<p>Docker Image gi\u00fap qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m tr\u1edf n\u00ean nhanh ch\u00f3ng, linh ho\u1ea1t v\u00e0 d\u1ec5 d\u00e0ng qu\u1ea3n l\u00fd h\u01a1n. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t s\u1ed1 l\u1ee3i \u00edch n\u1ed5i b\u1eadt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0110\u1ea3m b\u1ea3o t\u00ednh nh\u1ea5t qu\u00e1n<\/strong>: Docker Image ch\u1ee9a to\u00e0n b\u1ed9 m\u00f4i tr\u01b0\u1eddng c\u1ea7n thi\u1ebft \u0111\u1ec3 \u1ee9ng d\u1ee5ng ch\u1ea1y, gi\u00fap n\u00f3 ho\u1ea1t \u0111\u1ed9ng gi\u1ed1ng nhau tr\u00ean m\u1ecdi h\u1ec7 th\u1ed1ng, t\u1eeb m\u00e1y t\u00ednh c\u00e1 nh\u00e2n \u0111\u1ebfn m\u00e1y ch\u1ee7 ho\u1eb7c n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y. B\u1ea1n kh\u00f4ng c\u1ea7n lo l\u1eafng v\u1ec1 s\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa c\u00e1c m\u00f4i tr\u01b0\u1eddng.<\/li>\n\n\n\n<li><strong>Gi\u00fap tri\u1ec3n khai \u1ee9ng d\u1ee5ng nhanh ch\u00f3ng v\u00e0 d\u1ec5 d\u00e0ng h\u01a1n<\/strong>: Thay v\u00ec c\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh l\u1ea1i t\u1eeb \u0111\u1ea7u, b\u1ea1n ch\u1ec9 c\u1ea7n t\u1ea3i v\u1ec1 v\u00e0 ch\u1ea1y Docker Image.<\/li>\n\n\n\n<li><strong>T\u00e1i s\u1eed d\u1ee5ng v\u00e0 chia s\u1ebb<\/strong>: Docker Image cho ph\u00e9p b\u1ea1n t\u00e1i s\u1eed d\u1ee5ng c\u00e1c th\u00e0nh ph\u1ea7n m\u00f4i tr\u01b0\u1eddng v\u00e0 d\u1ec5 d\u00e0ng chia s\u1ebb Image v\u1edbi \u0111\u1ed3ng \u0111\u1ed9i ho\u1eb7c c\u1ed9ng \u0111\u1ed3ng, gi\u1ea3m thi\u1ec3u l\u1ed7i ph\u00e1t sinh t\u1eeb s\u1ef1 kh\u00e1c bi\u1ec7t m\u00f4i tr\u01b0\u1eddng.<\/li>\n\n\n\n<li><strong>Qu\u1ea3n l\u00fd phi\u00ean b\u1ea3n d\u1ec5 d\u00e0ng<\/strong>: B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o v\u00e0 qu\u1ea3n l\u00fd c\u00e1c phi\u00ean b\u1ea3n kh\u00e1c nhau c\u1ee7a \u1ee9ng d\u1ee5ng th\u00f4ng qua Docker Image, \u0111\u1ea3m b\u1ea3o r\u1eb1ng m\u1ecdi thay \u0111\u1ed5i \u0111\u1ec1u c\u00f3 th\u1ec3 ki\u1ec3m so\u00e1t v\u00e0 quay l\u1ea1i khi c\u1ea7n thi\u1ebft.<\/li>\n\n\n\n<li><strong>T\u00ednh b\u1ea3o m\u1eadt cao h\u01a1n<\/strong>: Docker Image cho ph\u00e9p c\u00f4 l\u1eadp \u1ee9ng d\u1ee5ng, gi\u1ea3m thi\u1ec3u r\u1ee7i ro b\u1ea3o m\u1eadt gi\u1eefa c\u00e1c \u1ee9ng d\u1ee5ng kh\u00e1c nhau tr\u00ean c\u00f9ng m\u1ed9t h\u1ec7 th\u1ed1ng.<\/li>\n\n\n\n<li><strong>Nh\u1eb9 v\u00e0 hi\u1ec7u qu\u1ea3<\/strong> <strong>h\u01a1n so v\u1edbi m\u00e1y \u1ea3o truy\u1ec1n th\u1ed1ng<\/strong>: Docker Image th\u01b0\u1eddng nh\u1eb9 h\u01a1n nhi\u1ec1u v\u00ec ch\u00fang chia s\u1ebb kernel c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh m\u00e1y ch\u1ee7 thay v\u00ec \u0111\u00f3ng g\u00f3i to\u00e0n b\u1ed9 h\u1ec7 \u0111i\u1ec1u h\u00e0nh.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cach-th\u1ee9c-ho\u1ea1t-d\u1ed9ng-c\u1ee7a-docker-image-nbsp\"><span class=\"ez-toc-section\" id=\"Cach_thuc_hoat_dong_cua_Docker_Image\"><\/span><strong>C\u00e1ch th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Docker Image<\/strong>&nbsp;<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>C\u00f3 th\u1ec3 t\u00f3m g\u1ecdn c\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Docker Image nh\u01b0 sau: Docker Image gi\u1ed1ng nh\u01b0 m\u1ed9t b\u1ea3n \u201csnapshot\u201d ch\u1ee9a to\u00e0n b\u1ed9 m\u00f4i tr\u01b0\u1eddng c\u1ea7n thi\u1ebft \u0111\u1ec3 ch\u1ea1y \u1ee9ng d\u1ee5ng. M\u1ed7i Image \u0111\u01b0\u1ee3c t\u1ea1o ra t\u1eeb Dockerfile &#8211; n\u01a1i ch\u1ec9 \u0111\u1ecbnh t\u1eebng b\u01b0\u1edbc nh\u01b0: c\u00e1ch c\u1ea5u h\u00ecnh h\u1ec7 th\u1ed1ng, c\u00e0i \u0111\u1eb7t ph\u1ea7n m\u1ec1m, v\u00e0 sao ch\u00e9p c\u00e1c file c\u1ea7n thi\u1ebft v\u00e0o Image.<\/p>\n\n\n\n<p>Sau khi qu\u00e1 tr\u00ecnh build ho\u00e0n t\u1ea5t, Docker Image ch\u1ee9a m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c layer (l\u1edbp), m\u1ed7i l\u1edbp \u0111\u1ea1i di\u1ec7n cho m\u1ed9t thay \u0111\u1ed5i ho\u1eb7c thao t\u00e1c trong qu\u00e1 tr\u00ecnh t\u1ea1o Image.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"232\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-4-vippro-640x232.png\" alt=\"docker image l\u00e0 g\u00ec - itviec blog\" class=\"wp-image-88718\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-4-vippro-640x232.png 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-4-vippro-300x109.png 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-4-vippro-200x72.png 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-4-vippro-768x278.png 768w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-4-vippro.png 1000w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>C\u00f9ng t\u00ecm hi\u1ec3u c\u1ee5 th\u1ec3 c\u00e1c b\u01b0\u1edbc nh\u00e9:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ea1o-docker-image-t\u1eeb-dockerfile\"><strong>T\u1ea1o Docker Image t\u1eeb Dockerfile<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Khi b\u1ea1n vi\u1ebft m\u1ed9t Dockerfile, c\u00e1c l\u1ec7nh trong \u0111\u00f3 (nh\u01b0 <code>RUN<\/code>, <code>COPY<\/code>, <code>ADD<\/code>, <code>EXPOSE<\/code>, v.v.) s\u1ebd t\u1ea1o ra c\u00e1c <strong>layer<\/strong> trong Docker Image. M\u1ed7i layer l\u01b0u tr\u1eef c\u00e1c thay \u0111\u1ed5i, v\u00ed d\u1ee5: c\u00e0i \u0111\u1eb7t m\u1ed9t g\u00f3i ph\u1ea7n m\u1ec1m, sao ch\u00e9p m\u00e3 ngu\u1ed3n v\u00e0o container, ho\u1eb7c t\u1ea1o th\u01b0 m\u1ee5c m\u1edbi.\u00a0<\/li>\n\n\n\n<li>Khi Docker Image \u0111\u01b0\u1ee3c build, c\u00e1c layer n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c x\u1ebfp ch\u1ed3ng l\u00ean nhau, v\u00e0 Docker s\u1ebd l\u01b0u tr\u1eef ch\u00fang trong h\u1ec7 th\u1ed1ng c\u1ee7a m\u00ecnh.\u00a0<\/li>\n\n\n\n<li>Docker s\u1eed d\u1ee5ng c\u01a1 ch\u1ebf cache th\u00f4ng minh trong qu\u00e1 tr\u00ecnh build, n\u1ebfu m\u1ed9t layer kh\u00f4ng thay \u0111\u1ed5i so v\u1edbi l\u1ea7n build tr\u01b0\u1edbc, Docker s\u1ebd s\u1eed d\u1ee5ng l\u1ea1i layer \u0111\u00e3 \u0111\u01b0\u1ee3c cache \u0111\u1ec3 t\u0103ng t\u1ed1c qu\u00e1 tr\u00ecnh build.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ea1o-container-t\u1eeb-docker-image\"><strong>T\u1ea1o Container t\u1eeb Docker Image<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Khi b\u1ea1n ch\u1ea1y l\u1ec7nh <strong><code>Docker run [image_name]<\/code><\/strong>, Docker s\u1eed d\u1ee5ng Docker Image \u0111\u1ec3 t\u1ea1o ra m\u1ed9t container. Container n\u00e0y l\u00e0 m\u1ed9t m\u00f4i tr\u01b0\u1eddng ch\u1ea1y \u1ee9ng d\u1ee5ng, \u0111\u01b0\u1ee3c t\u1ea1o ra t\u1eeb c\u00e1c layer trong Image.<\/li>\n\n\n\n<li>Khi container \u0111\u01b0\u1ee3c kh\u1edfi ch\u1ea1y, Docker s\u1ebd th\u00eam m\u1ed9t <strong>&#8220;writable layer&#8221;<\/strong> (l\u1edbp c\u00f3 th\u1ec3 ghi) \u1edf tr\u00ean c\u00f9ng c\u1ee7a c\u00e1c layer ch\u1ec9 \u0111\u1ecdc t\u1eeb image. T\u1ea5t c\u1ea3 thay \u0111\u1ed5i trong container &#8211; nh\u01b0 t\u1ea1o file m\u1edbi, s\u1eeda ho\u1eb7c x\u00f3a file hi\u1ec7n c\u00f3, c\u00e0i \u0111\u1eb7t th\u00eam ph\u1ea7n m\u1ec1m &#8211; ch\u1ec9 \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn container \u0111\u00f3 v\u00e0 \u0111\u1ec1u \u0111\u01b0\u1ee3c ghi v\u00e0o l\u1edbp writable n\u00e0y.\u00a0<\/li>\n\n\n\n<li>Container s\u1ebd c\u00f3 m\u1ed9t file system \u0111\u1ed9c l\u1eadp, tuy nhi\u00ean, n\u00f3 chia s\u1ebb c\u00e1c layer chung t\u1eeb Image. M\u1ed7i container \u0111\u01b0\u1ee3c t\u1ea1o ra t\u1eeb c\u00f9ng m\u1ed9t Docker Image s\u1ebd ho\u1ea1t \u0111\u1ed9ng gi\u1ed1ng nhau v\u00ec ch\u00fang \u0111\u1ec1u s\u1eed d\u1ee5ng chung c\u00e1c layer c\u1ee7a Image g\u1ed1c.<\/li>\n<\/ul>\n\n\n\n<p>C\u00e1c thay \u0111\u1ed5i trong container kh\u00f4ng l\u00e0m thay \u0111\u1ed5i Docker Image g\u1ed1c. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p b\u1ea1n th\u1eed nghi\u1ec7m v\u00e0 thay \u0111\u1ed5i m\u00e0 kh\u00f4ng l\u00e0m \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn c\u00e1c container kh\u00e1c \u0111\u01b0\u1ee3c t\u1ea1o t\u1eeb c\u00f9ng m\u1ed9t Image.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-l\u01b0u-l\u1ea1i-cac-thay-d\u1ed5i-v\u1edbi-docker-commit\"><strong>L\u01b0u l\u1ea1i c\u00e1c thay \u0111\u1ed5i v\u1edbi Docker Commit<\/strong><\/h3>\n\n\n\n<p>N\u1ebfu b\u1ea1n mu\u1ed1n gi\u1eef l\u1ea1i c\u00e1c thay \u0111\u1ed5i \u0111\u00e3 th\u1ef1c hi\u1ec7n trong container, b\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o m\u1ed9t Docker Image m\u1edbi t\u1eeb container \u0111\u00f3 b\u1eb1ng l\u1ec7nh <strong><code>Docker commit [container_id] [new_image_name]<\/code><\/strong>. \u0110i\u1ec1u n\u00e0y t\u1ea1o ra m\u1ed9t Image m\u1edbi v\u1edbi c\u00e1c thay \u0111\u1ed5i c\u1ee7a b\u1ea1n, v\u00e0 b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Image m\u1edbi n\u00e0y \u0111\u1ec3 t\u1ea1o c\u00e1c container m\u1edbi sau n\u00e0y.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-tai-s\u1eed-d\u1ee5ng-cac-layer-trong-docker-image\"><strong>T\u00e1i s\u1eed d\u1ee5ng c\u00e1c Layer trong Docker Image<\/strong><\/h3>\n\n\n\n<p>M\u1ed9t trong nh\u1eefng \u0111i\u1ec3m m\u1ea1nh c\u1ee7a Docker Image l\u00e0 kh\u1ea3 n\u0103ng t\u00e1i s\u1eed d\u1ee5ng c\u00e1c layer. N\u1ebfu m\u1ed9t layer \u0111\u00e3 t\u1ed3n t\u1ea1i (v\u00ed d\u1ee5, layer ch\u1ee9a h\u1ec7 \u0111i\u1ec1u h\u00e0nh c\u01a1 b\u1ea3n ho\u1eb7c th\u01b0 vi\u1ec7n ph\u1ed5 bi\u1ebfn), Docker s\u1ebd kh\u00f4ng c\u1ea7n ph\u1ea3i x\u00e2y d\u1ef1ng l\u1ea1i layer \u0111\u00f3 khi t\u1ea1o container m\u1edbi.&nbsp;<\/p>\n\n\n\n<p>\u0110i\u1ec1u n\u00e0y gi\u00fap ti\u1ebft ki\u1ec7m t\u00e0i nguy\u00ean v\u00e0 th\u1eddi gian, \u0111\u1eb7c bi\u1ec7t khi l\u00e0m vi\u1ec7c v\u1edbi nhi\u1ec1u container ho\u1eb7c nhi\u1ec1u Image gi\u1ed1ng nhau. C\u00e1c layer \u0111\u01b0\u1ee3c chia s\u1ebb gi\u1eefa nhi\u1ec1u image c\u0169ng gi\u00fap ti\u1ebft ki\u1ec7m kh\u00f4ng gian l\u01b0u tr\u1eef, v\u00ec Docker ch\u1ec9 l\u01b0u tr\u1eef m\u1ed7i layer m\u1ed9t l\u1ea7n tr\u00ean h\u1ec7 th\u1ed1ng.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-l\u1ec7nh-d\u1ec3-qu\u1ea3n-ly-va-s\u1eed-d\u1ee5ng-docker-image-hi\u1ec7u-qu\u1ea3\"><span class=\"ez-toc-section\" id=\"Cac_lenh_de_quan_ly_va_su_dung_Docker_Image_hieu_qua\"><\/span><strong>C\u00e1c l\u1ec7nh \u0111\u1ec3 qu\u1ea3n l\u00fd v\u00e0 s\u1eed d\u1ee5ng Docker Image hi\u1ec7u qu\u1ea3<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-l\u01b0u-tr\u1eef-va-ph\u1ee5c-h\u1ed3i-docker-image\"><strong>L\u01b0u tr\u1eef v\u00e0 ph\u1ee5c h\u1ed3i Docker Image<\/strong><\/h3>\n\n\n\n<p>Docker cung c\u1ea5p hai ph\u01b0\u01a1ng ph\u00e1p ch\u00ednh \u0111\u1ec3 l\u01b0u tr\u1eef v\u00e0 ph\u1ee5c h\u1ed3i Docker Image:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>S\u1eed d\u1ee5ng Docker Save v\u00e0 Docker Load:<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Ph\u01b0\u01a1ng ph\u00e1p n\u00e0y cho ph\u00e9p b\u1ea1n l\u01b0u v\u00e0 t\u1ea3i l\u1ea1i to\u00e0n b\u1ed9 Docker Image, bao g\u1ed3m t\u1ea5t c\u1ea3 c\u00e1c l\u1edbp (layers) v\u00e0 si\u00eau d\u1eef li\u1ec7u.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># L\u01b0u Image 'ubuntu:bionic' v\u00e0o file\n\ndocker save -o \/backup\/ubuntu.tar ubuntu:bionic\n\n# X\u00f3a Image kh\u1ecfi m\u00e1y \u0111\u1ec3 ki\u1ec3m tra\n\ndocker rmi ubuntu:bionic\n\n# T\u1ea3i l\u1ea1i Image t\u1eeb file \u0111\u00e3 l\u01b0u\n\ndocker load -i \/backup\/ubuntu.tar<\/code><\/pre>\n\n\n\n<p>\u2192 Ph\u00f9 h\u1ee3p khi b\u1ea1n mu\u1ed1n sao l\u01b0u ho\u1eb7c chuy\u1ec3n Docker Image gi\u1eefa c\u00e1c h\u1ec7 th\u1ed1ng m\u00e0 kh\u00f4ng c\u1ea7n t\u1ea3i l\u1ea1i t\u1eeb <strong><a href=\"https:\/\/itviec.com\/blog\/docker-hub-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Hub<\/a><\/strong>. Ph\u01b0\u01a1ng ph\u00e1p n\u00e0y gi\u1eef nguy\u00ean c\u1ea5u tr\u00fac layer c\u1ee7a image, bao g\u1ed3m c\u1ea3 l\u1ecbch s\u1eed v\u00e0 metadata, n\u00ean file \u0111\u1ea7u ra th\u01b0\u1eddng l\u1edbn h\u01a1n nh\u01b0ng ho\u00e0n to\u00e0n gi\u1ed1ng v\u1edbi image g\u1ed1c.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"98\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-3-vippro-640x98.png\" alt=\"docker image l\u00e0 g\u00ec - itviec blog\" class=\"wp-image-88717\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-3-vippro-640x98.png 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-3-vippro-300x46.png 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-3-vippro-200x31.png 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-3-vippro-768x118.png 768w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-3-vippro.png 800w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p><em>Quy tr\u00ecnh s\u1eed d\u1ee5ng Docker save v\u00e0 Docker load \u0111\u1ec3 l\u01b0u tr\u1eef v\u00e0 ph\u1ee5c h\u1ed3i Docker Image<\/em>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>S\u1eed d\u1ee5ng Docker Export v\u00e0 Docker Import<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Ph\u01b0\u01a1ng ph\u00e1p n\u00e0y cho ph\u00e9p b\u1ea1n xu\u1ea5t h\u1ec7 th\u1ed1ng t\u1ec7p c\u1ee7a m\u1ed9t Container v\u00e0 nh\u1eadp l\u1ea1i th\u00e0nh m\u1ed9t Image m\u1edbi. Tuy nhi\u00ean, n\u00f3 kh\u00f4ng gi\u1eef l\u1ea1i si\u00eau d\u1eef li\u1ec7u nh\u01b0 t\u00ean Image ho\u1eb7c tag.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ch\u1ea1y container t\u1eeb Ubuntu\n\ndocker run -d --name mycontainer ubuntu:bionic\n\n# Xu\u1ea5t container th\u00e0nh file .tar\n\ndocker export mycontainer -o \/backup\/container.tar\n\n# Nh\u1eadp file th\u00e0nh Image m\u1edbi\n\ndocker import \/backup\/container.tar mycustomubuntu:v1<\/code><\/pre>\n\n\n\n<p>\u2192 Ph\u00f9 h\u1ee3p khi b\u1ea1n mu\u1ed1n t\u1ea1o m\u1ed9t Image m\u1edbi t\u1eeb tr\u1ea1ng th\u00e1i hi\u1ec7n t\u1ea1i c\u1ee7a container m\u00e0 kh\u00f4ng c\u1ea7n gi\u1eef l\u1ea1i l\u1ecbch s\u1eed build.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"108\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-2-vippro-640x108.png\" alt=\"docker image l\u00e0 g\u00ec - itviec blog\" class=\"wp-image-88716\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-2-vippro-640x108.png 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-2-vippro-300x51.png 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-2-vippro-200x34.png 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-2-vippro-768x130.png 768w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-2-vippro.png 800w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p><em>Quy tr\u00ecnh s\u1eed d\u1ee5ng Docker export v\u00e0 Docker import \u0111\u1ec3 t\u1ea1o Image m\u1edbi t\u1eeb container<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ea1o-docker-image-m\u1edbi\"><strong>T\u1ea1o Docker Image m\u1edbi<\/strong><\/h3>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o Docker Image m\u1edbi b\u1eb1ng hai c\u00e1ch:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>T\u1ea1o Image b\u1eb1ng Docker Commit<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Ph\u01b0\u01a1ng ph\u00e1p n\u00e0y cho ph\u00e9p b\u1ea1n l\u01b0u tr\u1ea1ng th\u00e1i hi\u1ec7n t\u1ea1i c\u1ee7a m\u1ed9t container \u0111ang ch\u1ea1y th\u00e0nh m\u1ed9t Image m\u1edbi.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Truy c\u1eadp v\u00e0o container\n\ndocker exec -it mycontainer bash\n\n# C\u00e0i \u0111\u1eb7t g\u00f3i curl trong container\n\napt update &amp;&amp; apt install -y curl\n\n# T\u1ea1o Image m\u1edbi t\u1eeb container\n\ndocker commit mycontainer ubuntu_with_curl:v1<\/code><\/pre>\n\n\n\n<p>\u2192 Ph\u00f9 h\u1ee3p khi b\u1ea1n \u0111\u00e3 th\u1ef1c hi\u1ec7n c\u00e1c thay \u0111\u1ed5i trong container v\u00e0 mu\u1ed1n l\u01b0u l\u1ea1i \u0111\u1ec3 s\u1eed d\u1ee5ng sau. Tuy nhi\u00ean, ph\u01b0\u01a1ng ph\u00e1p n\u00e0y kh\u00f4ng \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb cho m\u00f4i tr\u01b0\u1eddng production v\u00ec kh\u00f3 t\u00e1i t\u1ea1o ch\u00ednh x\u00e1c (kh\u00f4ng c\u00f3 t\u00ednh reproducible) v\u00e0 thi\u1ebfu t\u00ednh minh b\u1ea1ch trong qu\u00e1 tr\u00ecnh t\u1ea1o image. Image t\u1ea1o b\u1eb1ng commit th\u01b0\u1eddng c\u00f3 k\u00edch th\u01b0\u1edbc l\u1edbn h\u01a1n v\u00e0 kh\u00f3 theo d\u00f5i c\u00e1c thay \u0111\u1ed5i.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>T\u1ea1o Image b\u1eb1ng Docker build t\u1eeb Dockerfile &#8211; \u0110\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Ph\u01b0\u01a1ng ph\u00e1p n\u00e0y cho ph\u00e9p b\u1ea1n t\u1ef1 \u0111\u1ed9ng h\u00f3a qu\u00e1 tr\u00ecnh t\u1ea1o Image b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng Dockerfile.<\/p>\n\n\n\n<p>Dockerfile m\u1eabu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM ubuntu:bionic\n\nRUN apt update &amp;&amp; apt install -y nginx\n\nCOPY .\/index.html \/var\/www\/html\/index.html\n\nCMD &#91;\"nginx\", \"-g\", \"daemon off;\"]<\/code><\/pre>\n\n\n\n<p>Build Image:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build -t mynginx:v1 .<\/code><\/pre>\n\n\n\n<p>\u2192 Ph\u00f9 h\u1ee3p cho vi\u1ec7c tri\u1ec3n khai \u1ee9ng d\u1ee5ng trong m\u00f4i tr\u01b0\u1eddng s\u1ea3n xu\u1ea5t ho\u1eb7c t\u00edch h\u1ee3p li\u00ean t\u1ee5c (CI\/CD). \u0110\u00e2y l\u00e0 ph\u01b0\u01a1ng ph\u00e1p \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb v\u00ec \u0111\u1ea3m b\u1ea3o t\u00ednh nh\u1ea5t qu\u00e1n, c\u00f3 th\u1ec3 t\u00e1i t\u1ea1o v\u00e0 d\u1ec5 d\u00e0ng qu\u1ea3n l\u00fd phi\u00ean b\u1ea3n. \u0110\u1ec3 t\u1ed1i \u01b0u h\u00f3a k\u00edch th\u01b0\u1edbc image, b\u1ea1n n\u00ean s\u1eed d\u1ee5ng multi-stage builds v\u00e0 t\u1ed1i \u01b0u c\u00e1c l\u1ec7nh RUN b\u1eb1ng c\u00e1ch k\u1ebft h\u1ee3p nhi\u1ec1u l\u1ec7nh trong m\u1ed9t layer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"94\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-1-vippro-640x94.png\" alt=\"docker image l\u00e0 g\u00ec - itviec blog\" class=\"wp-image-88715\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-1-vippro-640x94.png 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-1-vippro-300x44.png 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-1-vippro-200x30.png 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-1-vippro-768x113.png 768w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-1-vippro.png 800w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p><em>Quy tr\u00ecnh t\u1ea1o Docker Image b\u1eb1ng Dockerfile<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-h\u1ee3p-cac-l\u1ec7nh-c\u01a1-b\u1ea3n-dung-d\u1ec3-qu\u1ea3n-ly-docker-image\"><span class=\"ez-toc-section\" id=\"Tong_hop_cac_lenh_co_ban_dung_de_quan_ly_Docker_Image\"><\/span><strong>T\u1ed5ng h\u1ee3p c\u00e1c l\u1ec7nh c\u01a1 b\u1ea3n d\u00f9ng \u0111\u1ec3 qu\u1ea3n l\u00fd Docker Image<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>S\u1eed d\u1ee5ng c\u00e1c l\u1ec7nh n\u00e0y gi\u00fap b\u1ea1n ki\u1ec3m so\u00e1t v\u00e0 duy tr\u00ec kho Docker Image m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Li\u1ec7t k\u00ea c\u00e1c Image hi\u1ec7n c\u00f3: <code>docker Images<\/code> ho\u1eb7c <code>docker image ls<\/code><\/li>\n\n\n\n<li>X\u00f3a Image kh\u00f4ng c\u00f2n s\u1eed d\u1ee5ng: <code>docker rmi mynginx:v1<\/code> ho\u1eb7c <code>docker image rm mynginx:v1<\/code><\/li>\n\n\n\n<li>G\u1eafn tag m\u1edbi cho Image: <code>docker tag mynginx:v1 username\/mynginx:latest<\/code><\/li>\n\n\n\n<li>\u0110\u1ea9y Image l\u00ean Docker Hub: <code>docker push username\/mynginx:latest<\/code><\/li>\n\n\n\n<li>T\u1ea3i Image t\u1eeb Docker Hub: <code>docker pull username\/mynginx:latest<\/code><\/li>\n\n\n\n<li>Ki\u1ec3m tra chi ti\u1ebft c\u1ee7a m\u1ed9t Image: <code>docker inspect mynginx:v1<\/code><\/li>\n\n\n\n<li>T\u00ecm ki\u1ebfm Image tr\u00ean Docker Hub: <code>docker search nginx<\/code><\/li>\n\n\n\n<li>X\u00f3a t\u1ea5t c\u1ea3 Image kh\u00f4ng s\u1eed d\u1ee5ng (dangling images): <code>docker image prune<\/code><\/li>\n\n\n\n<li>D\u1ecdn d\u1eb9p h\u1ec7 th\u1ed1ng (x\u00f3a containers kh\u00f4ng d\u00f9ng, networks, images v\u00e0 build cache): <code>docker system prune -a<\/code><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-cach-t\u1ed1i-\u01b0u-hoa-docker-image-t\u1ed1t-nh\u1ea5t\"><span class=\"ez-toc-section\" id=\"Cac_cach_toi_uu_hoa_Docker_Image_tot_nhat\"><\/span><strong>C\u00e1c c\u00e1ch t\u1ed1i \u01b0u h\u00f3a Docker Image t\u1ed1t nh\u1ea5t<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Vi\u1ec7c t\u1ed1i \u01b0u h\u00f3a Docker Image kh\u00f4ng ch\u1ec9 gi\u00fap gi\u1ea3m dung l\u01b0\u1ee3ng l\u01b0u tr\u1eef m\u00e0 c\u00f2n t\u0103ng t\u1ed1c \u0111\u1ed9 build, c\u1ea3i thi\u1ec7n hi\u1ec7u su\u1ea5t CI\/CD v\u00e0 gi\u1ea3m th\u1eddi gian tri\u1ec3n khai. M\u1ed9t Image nh\u1ecf g\u1ecdn, hi\u1ec7u qu\u1ea3 s\u1ebd gi\u00fap ti\u1ebft ki\u1ec7m t\u00e0i nguy\u00ean h\u1ec7 th\u1ed1ng v\u00e0 tr\u00e1nh c\u00e1c l\u1ed7i kh\u00f4ng mong mu\u1ed1n trong m\u00f4i tr\u01b0\u1eddng production.<\/p>\n\n\n\n<p>C\u00e1c c\u00e1ch l\u00e0m t\u1ed1t nh\u1ea5t l\u00e0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>S\u1eed d\u1ee5ng image c\u01a1 s\u1edf nh\u1ecf nh\u01b0 Alpine Linux \u0111\u1ec3 gi\u1ea3m k\u00edch th\u01b0\u1edbc image<\/li>\n\n\n\n<li>K\u1ebft h\u1ee3p nhi\u1ec1u l\u1ec7nh RUN trong m\u1ed9t d\u00f2ng \u0111\u1ec3 gi\u1ea3m s\u1ed1 l\u01b0\u1ee3ng layer<\/li>\n\n\n\n<li>D\u1ecdn d\u1eb9p sau khi c\u00e0i \u0111\u1eb7t \u0111\u1ec3 tr\u00e1nh gi\u1eef l\u1ea1i file kh\u00f4ng c\u1ea7n thi\u1ebft<\/li>\n\n\n\n<li>S\u1eed d\u1ee5ng .dockerignore \u0111\u1ec3 lo\u1ea1i b\u1ecf c\u00e1c file kh\u00f4ng c\u1ea7n thi\u1ebft khi build<\/li>\n\n\n\n<li>T\u00e1ch build th\u00e0nh nhi\u1ec1u stage \u0111\u1ec3 gi\u1ea3m k\u00edch th\u01b0\u1edbc image cu\u1ed1i c\u00f9ng, \u0111\u1eb7c bi\u1ec7t v\u1edbi \u1ee9ng d\u1ee5ng c\u1ea7n bi\u00ean d\u1ecbch<\/li>\n\n\n\n<li>S\u1eed d\u1ee5ng ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng ph\u1ea3i root gi\u00fap t\u0103ng b\u1ea3o m\u1eadt cho Image<\/li>\n\n\n\n<li>D\u00f9ng c\u00e1c Image ch\u00ednh th\u1ee9c\u00a0<\/li>\n\n\n\n<li>\u0110\u1eb7t nh\u1eefng layer \u00edt thay \u0111\u1ed5i \u1edf \u0111\u1ea7u Dockerfile \u0111\u1ec3 t\u1eadn d\u1ee5ng cache<\/li>\n\n\n\n<li>Lu\u00f4n g\u1eafn tag c\u1ee5 th\u1ec3 cho image thay v\u00ec s\u1eed d\u1ee5ng tag &#8216;latest&#8217;<\/li>\n<\/ul>\n\n\n\n<p>C\u00f9ng \u0111i v\u00e0o chi ti\u1ebft t\u1eebng c\u00e1ch nh\u00e9:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-s\u1eed-d\u1ee5ng-alpine-linux-thay-vi-ubuntu-ho\u1eb7c-debian\"><strong>S\u1eed d\u1ee5ng Alpine Linux thay v\u00ec Ubuntu ho\u1eb7c Debian<\/strong><\/h3>\n\n\n\n<p>Alpine l\u00e0 m\u1ed9t b\u1ea3n ph\u00e2n ph\u1ed1i Linux si\u00eau nh\u1eb9 (~5MB), gi\u00fap gi\u1ea3m \u0111\u00e1ng k\u1ec3 k\u00edch th\u01b0\u1edbc Image.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM alpine:latest\n\nRUN apk add --no-cache curl<\/code><\/pre>\n\n\n\n<p>\u2192 So v\u1edbi Ubuntu, Alpine gi\u1ea3m k\u00edch th\u01b0\u1edbc Image t\u1eeb h\u00e0ng tr\u0103m MB xu\u1ed1ng c\u00f2n v\u00e0i MB. Tuy nhi\u00ean, Alpine s\u1eed d\u1ee5ng th\u01b0 vi\u1ec7n musl libc thay v\u00ec glibc nh\u01b0 c\u00e1c distro ph\u1ed5 bi\u1ebfn kh\u00e1c, c\u00f3 th\u1ec3 g\u00e2y ra v\u1ea5n \u0111\u1ec1 t\u01b0\u01a1ng th\u00edch v\u1edbi m\u1ed9t s\u1ed1 \u1ee9ng d\u1ee5ng. Lu\u00f4n ki\u1ec3m tra \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n ch\u1ea1y \u1ed5n \u0111\u1ecbnh tr\u00ean Alpine tr\u01b0\u1edbc khi s\u1eed d\u1ee5ng trong m\u00f4i tr\u01b0\u1eddng production.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-s\u1eed-d\u1ee5ng-cac-l\u1ec7nh-run-k\u1ebft-h\u1ee3p\"><strong>S\u1eed d\u1ee5ng c\u00e1c l\u1ec7nh RUN k\u1ebft h\u1ee3p<\/strong><\/h3>\n\n\n\n<p>M\u1ed7i l\u1ec7nh RUN t\u1ea1o ra m\u1ed9t layer ri\u00eang bi\u1ec7t trong image. Do \u0111\u00f3, b\u1ea1n n\u00ean tr\u00e1nh d\u00f9ng nhi\u1ec1u d\u00f2ng RUN ri\u00eang bi\u1ec7t v\u00ec s\u1ebd t\u1ea1o nhi\u1ec1u l\u1edbp kh\u00f4ng c\u1ea7n thi\u1ebft. Thay v\u00e0o \u0111\u00f3, b\u1ea1n c\u00f3 th\u1ec3 k\u1ebft h\u1ee3p nhi\u1ec1u l\u1ec7nh v\u00e0o m\u1ed9t RUN duy nh\u1ea5t nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RUN apt update &amp;&amp; apt install -y curl &amp;&amp; rm -rf \/var\/lib\/apt\/lists\/*<\/code><\/pre>\n\n\n\n<p>C\u00e1ch n\u00e0y gi\u00fap gi\u1ea3m s\u1ed1 l\u1edbp (layer), t\u1eeb \u0111\u00f3 gi\u1ea3m overhead trong khi v\u1eabn duy tr\u00ec kh\u1ea3 n\u0103ng s\u1eed d\u1ee5ng cache c\u1ee7a Docker.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-xoa-b\u1ecf-file-t\u1ea1m-va-cache\"><strong>Xo\u00e1 b\u1ecf file t\u1ea1m v\u00e0 cache<\/strong><\/h3>\n\n\n\n<p>B\u1ea1n c\u1ea7n nh\u1edb ph\u1ea3i lu\u00f4n d\u1ecdn d\u1eb9p sau khi c\u00e0i \u0111\u1eb7t \u0111\u1ec3 tr\u00e1nh gi\u1eef l\u1ea1i file kh\u00f4ng c\u1ea7n thi\u1ebft.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RUN apt update &amp;&amp; \\\n\n\u00a0\u00a0\u00a0\u00a0apt install -y nginx &amp;&amp; \\\n\n\u00a0\u00a0\u00a0\u00a0apt clean &amp;&amp; \\\n\n\u00a0\u00a0\u00a0\u00a0rm -rf \/var\/lib\/apt\/lists\/*<\/code><\/pre>\n\n\n\n<p>\u0110i\u1ec1u n\u00e0y \u0111\u1eb7c bi\u1ec7t quan tr\u1ecdng khi l\u00e0m vi\u1ec7c v\u1edbi c\u00e1c package manager nh\u01b0 apt, yum, hay npm. N\u1ebfu kh\u00f4ng x\u00f3a cache, c\u00e1c file t\u1ea1m th\u1eddi s\u1ebd \u0111\u01b0\u1ee3c gi\u1eef l\u1ea1i trong layer c\u1ee7a image, l\u00e0m t\u0103ng k\u00edch th\u01b0\u1edbc \u0111\u00e1ng k\u1ec3. Trong c\u00e1c \u1ee9ng d\u1ee5ng Node.js, x\u00f3a cache npm v\u1edbi npm cache clean &#8211;force sau khi c\u00e0i \u0111\u1eb7t c\u0169ng r\u1ea5t h\u1eefu \u00edch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-s\u1eed-d\u1ee5ng-dockerignore\"><strong>S\u1eed d\u1ee5ng .dockerignore<\/strong><\/h3>\n\n\n\n<p>T\u01b0\u01a1ng t\u1ef1 nh\u01b0 .gitignore, t\u1ec7p .dockerignore gi\u00fap lo\u1ea1i tr\u1eeb c\u00e1c file\/th\u01b0 m\u1ee5c kh\u00f4ng c\u1ea7n thi\u1ebft khi build Image (nh\u01b0 .git, node_modules, file log&#8230;), gi\u00fap gi\u1ea3m k\u00edch th\u01b0\u1edbc context build v\u00e0 th\u1eddi gian g\u1eedi d\u1eef li\u1ec7u v\u00e0o Docker Daemon<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node_modules\n\n.git\n\n*.log\n\n.env<\/code><\/pre>\n\n\n\n<p>\u0110i\u1ec1u n\u00e0y \u0111\u1eb7c bi\u1ec7t quan tr\u1ecdng trong c\u00e1c d\u1ef1 \u00e1n l\u1edbn, n\u01a1i th\u01b0 m\u1ee5c build c\u00f3 th\u1ec3 ch\u1ee9a h\u00e0ng GB d\u1eef li\u1ec7u kh\u00f4ng c\u1ea7n thi\u1ebft cho image.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-tach-build-thanh-nhi\u1ec1u-stage-multi-stage-build\"><strong>T\u00e1ch build th\u00e0nh nhi\u1ec1u stage (Multi-stage build)<\/strong><\/h3>\n\n\n\n<p>K\u1ef9 thu\u1eadt Multi-stage build gi\u00fap b\u1ea1n build \u1ee9ng d\u1ee5ng trong m\u1ed9t Image, sau \u0111\u00f3 copy file k\u1ebft qu\u1ea3 sang m\u1ed9t Image nh\u1ecf g\u1ecdn h\u01a1n \u0111\u1ec3 ch\u1ea1y.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Stage 1: build app\n\nFROM node:18 AS builder\n\nWORKDIR \/app\n\nCOPY . .\n\nRUN npm install &amp;&amp; npm run build\n\n# Stage 2: run app\n\nFROM nginx:alpine\n\nCOPY --from=builder \/app\/build \/usr\/share\/nginx\/html<\/code><\/pre>\n\n\n\n<p>\u2192 Ch\u1ec9 gi\u1eef l\u1ea1i th\u00e0nh ph\u1ea9m cu\u1ed1i c\u00f9ng, lo\u1ea1i b\u1ecf to\u00e0n b\u1ed9 file kh\u00f4ng c\u1ea7n thi\u1ebft.&nbsp;<\/p>\n\n\n\n<p>Multi-stage build \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch cho c\u00e1c ng\u00f4n ng\u1eef bi\u00ean d\u1ecbch nh\u01b0 Go, Java, C++, Rust, n\u01a1i c\u00f4ng c\u1ee5 build v\u00e0 dependencies th\u01b0\u1eddng c\u00f3 k\u00edch th\u01b0\u1edbc l\u1edbn nh\u01b0ng kh\u00f4ng c\u1ea7n thi\u1ebft trong runtime. V\u00ed d\u1ee5, m\u1ed9t \u1ee9ng d\u1ee5ng Go c\u00f3 th\u1ec3 gi\u1ea3m t\u1eeb 1GB+ xu\u1ed1ng ch\u1ec9 c\u00f2n v\u00e0i MB.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-khong-ch\u1ea1y-container-b\u1eb1ng-quy\u1ec1n-root\"><strong>Kh\u00f4ng ch\u1ea1y Container b\u1eb1ng quy\u1ec1n root<\/strong><\/h3>\n\n\n\n<p>Ch\u1ea1y container v\u1edbi quy\u1ec1n root c\u00f3 th\u1ec3 d\u1eabn \u0111\u1ebfn r\u1ee7i ro b\u1ea3o m\u1eadt nghi\u00eam tr\u1ecdng &#8211; n\u1ebfu container b\u1ecb x\u00e2m nh\u1eadp, k\u1ebb t\u1ea5n c\u00f4ng c\u00f3 th\u1ec3 c\u00f3 to\u00e0n quy\u1ec1n truy c\u1eadp v\u00e0o m\u00e1y ch\u1ee7. Vi\u1ec7c s\u1eed d\u1ee5ng ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng ph\u1ea3i root gi\u00fap t\u0103ng b\u1ea3o m\u1eadt cho Image.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RUN adduser -D myuser\n\nUSER myuser<\/code><\/pre>\n\n\n\n<p>S\u1eed d\u1ee5ng user kh\u00f4ng ph\u1ea3i root c\u0169ng l\u00e0 m\u1ed9t trong nh\u1eefng y\u00eau c\u1ea7u c\u1ee7a CIS Docker Benchmark v\u00e0 c\u00e1c ti\u00eau chu\u1ea9n b\u1ea3o m\u1eadt container.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-dung-cac-image-chinh-th\u1ee9c-nbsp\"><strong>D\u00f9ng c\u00e1c Image ch\u00ednh th\u1ee9c&nbsp;<\/strong><\/h3>\n\n\n\n<p>Docker Hub cung c\u1ea5p nhi\u1ec1u Image ch\u00ednh th\u1ee9c \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ed1i \u01b0u v\u00e0 b\u1ea3o tr\u00ec t\u1ed1t, b\u1ea1n n\u00ean \u01b0u ti\u00ean s\u1eed d\u1ee5ng ch\u00fang thay v\u00ec t\u1ea1o t\u1eeb \u0111\u1ea7u. Image ch\u00ednh th\u1ee9c \u0111\u01b0\u1ee3c \u0111\u00e1nh d\u1ea5u b\u1eb1ng nh\u00e3n &#8220;Official Image&#8221; tr\u00ean Docker Hub v\u00e0 th\u01b0\u1eddng kh\u00f4ng c\u00f3 ti\u1ec1n t\u1ed1 namespace (v\u00ed d\u1ee5: nginx, node, python). C\u00e1c image n\u00e0y \u0111\u01b0\u1ee3c Docker v\u00e0 c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n c\u1ee7a t\u1eebng c\u00f4ng ngh\u1ec7 duy tr\u00ec, th\u01b0\u1eddng xuy\u00ean c\u1eadp nh\u1eadt b\u1ea3n v\u00e1 b\u1ea3o m\u1eadt v\u00e0 tu\u00e2n th\u1ee7 c\u00e1c best practices.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-s\u1eafp-x\u1ebfp-cac-l\u1ec7nh-trong-dockerfile\"><strong>S\u1eafp x\u1ebfp c\u00e1c l\u1ec7nh trong Dockerfile<\/strong><\/h3>\n\n\n\n<p>\u0110\u1eb7t c\u00e1c l\u1ec7nh \u00edt thay \u0111\u1ed5i \u1edf \u0111\u1ea7u Dockerfile v\u00e0 c\u00e1c l\u1ec7nh th\u01b0\u1eddng xuy\u00ean thay \u0111\u1ed5i \u1edf cu\u1ed1i. Docker s\u1ebd cache m\u1ed7i layer v\u00e0 ch\u1ec9 rebuild t\u1eeb layer \u0111\u1ea7u ti\u00ean thay \u0111\u1ed5i. V\u00ed d\u1ee5, COPY package.json tr\u01b0\u1edbc v\u00e0 c\u00e0i \u0111\u1eb7t dependencies, sau \u0111\u00f3 m\u1edbi COPY m\u00e3 ngu\u1ed3n \u1ee9ng d\u1ee5ng &#8211; v\u00ec m\u00e3 ngu\u1ed3n th\u01b0\u1eddng thay \u0111\u1ed5i th\u01b0\u1eddng xuy\u00ean h\u01a1n file dependencies.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cau-h\u1ecfi-th\u01b0\u1eddng-g\u1eb7p-v\u1ec1-docker-image\"><span class=\"ez-toc-section\" id=\"Cau_hoi_thuong_gap_ve_Docker_Image\"><\/span><strong>C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Docker Image<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-image-khac-gi-so-v\u1edbi-docker-container\"><strong>Docker Image kh\u00e1c g\u00ec so v\u1edbi Docker Container?<\/strong><\/h3>\n\n\n\n<p>Docker Image l\u00e0 m\u1ed9t t\u1ec7p b\u1ea5t bi\u1ebfn ch\u1ee9a m\u00e3 ngu\u1ed3n, th\u01b0 vi\u1ec7n v\u00e0 c\u1ea5u h\u00ecnh c\u1ea7n thi\u1ebft \u0111\u1ec3 t\u1ea1o n\u00ean m\u1ed9t \u1ee9ng d\u1ee5ng. Trong khi \u0111\u00f3, Docker container l\u00e0 m\u1ed9t phi\u00ean b\u1ea3n \u0111ang ch\u1ea1y c\u1ee7a Docker Image, ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t th\u1ec3 hi\u1ec7n (instance) s\u1ed1ng \u0111\u1ed9ng. N\u00f3i c\u00e1ch kh\u00e1c, Docker Image l\u00e0 khu\u00f4n m\u1eabu, c\u00f2n container l\u00e0 k\u1ebft qu\u1ea3 khi Image \u0111\u00f3 \u0111\u01b0\u1ee3c ch\u1ea1y.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-image-co-th\u1ec3-ch\u1ea1y-tren-windows-va-linux-khong\"><strong>Docker Image c\u00f3 th\u1ec3 ch\u1ea1y tr\u00ean Windows v\u00e0 Linux kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<p>Docker Image c\u00f3 th\u1ec3 ch\u1ea1y tr\u00ean c\u1ea3 Windows v\u00e0 Linux, tuy nhi\u00ean c\u1ea7n \u0111\u00fang h\u1ec7 \u0111i\u1ec1u h\u00e0nh n\u1ec1n t\u1ea3ng t\u01b0\u01a1ng \u1ee9ng v\u1edbi Image.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>M\u1ed9t Docker Image \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng cho Linux s\u1ebd ch\u1ea1y tr\u00ean Docker Engine cho Linux ho\u1eb7c qua m\u00e1y \u1ea3o tr\u00ean Windows.\u00a0<\/li>\n\n\n\n<li>T\u01b0\u01a1ng t\u1ef1, Image d\u00e0nh cho Windows y\u00eau c\u1ea7u Docker ch\u1ea1y tr\u00ean Windows v\u1edbi ch\u1ebf \u0111\u1ed9 Windows Containers. Windows c\u0169ng cung c\u1ea5p Windows Subsystem for Linux (WSL) cho ph\u00e9p ch\u1ea1y container Linux tr\u00ean Windows v\u1edbi hi\u1ec7u su\u1ea5t t\u1ed1t h\u01a1n so v\u1edbi s\u1eed d\u1ee5ng m\u00e1y \u1ea3o.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-image-co-lien-quan-gi-d\u1ebfn-ci-cd-khong\"><strong>Docker Image c\u00f3 li\u00ean quan g\u00ec \u0111\u1ebfn CI\/CD kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<p>Docker Image \u0111\u00f3ng vai tr\u00f2 quan tr\u1ecdng trong quy tr\u00ecnh CI\/CD khi gi\u00fap \u0111\u00f3ng g\u00f3i \u1ee9ng d\u1ee5ng m\u1ed9t c\u00e1ch nh\u1ea5t qu\u00e1n qua c\u00e1c m\u00f4i tr\u01b0\u1eddng. Trong giai \u0111o\u1ea1n CI (Continuous Integration), Docker Image \u0111\u01b0\u1ee3c t\u1ea1o t\u1ef1 \u0111\u1ed9ng sau m\u1ed7i l\u1ea7n c\u1eadp nh\u1eadt m\u00e3 ngu\u1ed3n. Sau \u0111\u00f3, trong giai \u0111o\u1ea1n CD (Continuous Deployment), Image n\u00e0y \u0111\u01b0\u1ee3c tri\u1ec3n khai nhanh ch\u00f3ng l\u00ean m\u00f4i tr\u01b0\u1eddng staging ho\u1eb7c production.<\/p>\n\n\n\n<p>C\u00e1c c\u00f4ng c\u1ee5 CI\/CD ph\u1ed5 bi\u1ebfn nh\u01b0 Jenkins, GitHub Actions, GitLab CI, v\u00e0 CircleCI \u0111\u1ec1u c\u00f3 h\u1ed7 tr\u1ee3 t\u00edch h\u1ee3p \u0111\u1ec3 build, test v\u00e0 push Docker Image.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-docker-image-co-th\u1ec3-ch\u1ea1y-tr\u1ef1c-ti\u1ebfp-ma-khong-c\u1ea7n-docker-khong\"><strong>Docker Image c\u00f3 th\u1ec3 ch\u1ea1y tr\u1ef1c ti\u1ebfp m\u00e0 kh\u00f4ng c\u1ea7n Docker kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<p>Docker Image kh\u00f4ng th\u1ec3 ch\u1ea1y tr\u1ef1c ti\u1ebfp n\u1ebfu kh\u00f4ng c\u00f3 Docker Engine ho\u1eb7c c\u00f4ng c\u1ee5 t\u01b0\u01a1ng th\u00edch h\u1ed7 tr\u1ee3. B\u1edfi v\u00ec Docker Image ch\u1ec9 l\u00e0 m\u1ed9t g\u00f3i ch\u1ee9a \u1ee9ng d\u1ee5ng v\u00e0 m\u00f4i tr\u01b0\u1eddng, c\u1ea7n c\u00f3 Docker \u0111\u1ec3 gi\u1ea3i n\u00e9n, qu\u1ea3n l\u00fd v\u00e0 th\u1ef1c thi.<\/p>\n\n\n\n<p>Do \u0111\u00f3, \u0111\u1ec3 ch\u1ea1y \u0111\u01b0\u1ee3c m\u1ed9t Docker Image, b\u1eaft bu\u1ed9c ph\u1ea3i c\u00f3 Docker ho\u1eb7c c\u00f4ng c\u1ee5 container t\u01b0\u01a1ng \u0111\u01b0\u01a1ng nh\u01b0 Podman, containerd, CRI-O ho\u1eb7c c\u00e1c runtime container OCI-compatible kh\u00e1c. Podman \u0111\u1eb7c bi\u1ec7t ph\u1ed5 bi\u1ebfn v\u00ec c\u00f3 c\u00fa ph\u00e1p t\u01b0\u01a1ng t\u1ef1 Docker nh\u01b0ng kh\u00f4ng y\u00eau c\u1ea7u daemon ch\u1ea1y v\u1edbi quy\u1ec1n root.<\/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>T\u00f3m l\u1ea1i, Docker Image ch\u00ednh l\u00e0 n\u1ec1n t\u1ea3ng gi\u00fap b\u1ea1n x\u00e2y d\u1ef1ng c\u00e1c \u1ee9ng d\u1ee5ng hi\u1ec7n \u0111\u1ea1i theo c\u00e1ch linh ho\u1ea1t v\u00e0 d\u1ec5 ki\u1ec3m so\u00e1t. Vi\u1ec7c n\u1eafm v\u1eefng c\u00e1ch t\u1ea1o, qu\u1ea3n l\u00fd v\u00e0 t\u1ed1i \u01b0u h\u00f3a Docker Image s\u1ebd gi\u00fap b\u1ea1n l\u00e0m ch\u1ee7 m\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n v\u00e0 tri\u1ec3n khai m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. D\u00f9 \u1ee9ng d\u1ee5ng ch\u1ea1y tr\u00ean m\u00e1y c\u00e1 nh\u00e2n hay h\u1ec7 th\u1ed1ng Production, Docker Image lu\u00f4n \u0111\u1ea3m b\u1ea3o s\u1ef1 nh\u1ea5t qu\u00e1n v\u00e0 \u1ed5n \u0111\u1ecbnh c\u1ea7n thi\u1ebft.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u1ebfu b\u1ea1n t\u1eebng nghe \u0111\u1ebfn vi\u1ec7c &#8220;\u0111\u00f3ng g\u00f3i&#8221; \u1ee9ng d\u1ee5ng \u0111\u1ec3 ch\u1ea1y \u1edf b\u1ea5t c\u1ee9 \u0111\u00e2u, th\u00ec ch\u00ednh Docker Image l\u00e0 th\u1ee9 l\u00e0m n\u00ean \u0111i\u1ec1u \u0111\u00f3. Docker Image l\u00e0 n\u1ec1n t\u1ea3ng c\u1ed1t l\u00f5i gi\u00fap container ho\u1ea1t \u0111\u1ed9ng. Hi\u1ec3u r\u00f5 Docker Image l\u00e0 g\u00ec s\u1ebd ch\u00ednh l\u00e0 b\u01b0\u1edbc \u0111\u1ea7u gi\u00fap b\u1ea1n ti\u1ebfp c\u1eadn d\u1ec5 d\u00e0ng h\u01a1n [&hellip;]<\/p>\n","protected":false},"author":214,"featured_media":88714,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109],"tags":[],"class_list":["post-88706","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Docker Image l\u00e0 g\u00ec: C\u00e1c c\u00e1ch t\u1ed1t nh\u1ea5t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a Docker Image - ITviec Blog<\/title>\n<meta name=\"description\" content=\"T\u00ecm hi\u1ec3u Docker Image l\u00e0 g\u00ec, c\u1ea5u tr\u00fac, c\u00e1ch ho\u1ea1t \u0111\u1ed9ng, l\u1ee3i \u00edch v\u00e0 c\u00e1ch t\u1ed1i \u01b0u Docker Image t\u1ed1t nh\u1ea5t cho m\u00f4i tr\u01b0\u1eddng production.\" \/>\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\/docker-image-la-gi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Image l\u00e0 g\u00ec: C\u00e1c c\u00e1ch t\u1ed1t nh\u1ea5t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a Docker Image\" \/>\n<meta property=\"og:description\" content=\"N\u1ebfu b\u1ea1n t\u1eebng nghe \u0111\u1ebfn vi\u1ec7c &quot;\u0111\u00f3ng g\u00f3i&quot; \u1ee9ng d\u1ee5ng \u0111\u1ec3 ch\u1ea1y \u1edf b\u1ea5t c\u1ee9 \u0111\u00e2u, th\u00ec ch\u00ednh Docker Image l\u00e0 th\u1ee9 l\u00e0m n\u00ean \u0111i\u1ec1u \u0111\u00f3. Docker Image l\u00e0 n\u1ec1n t\u1ea3ng c\u1ed1t l\u00f5i gi\u00fap\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/docker-image-la-gi\/\" \/>\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-06-30T08:21:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-30T08:53:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-vippro-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1347\" \/>\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 Image l\u00e0 g\u00ec: C\u00e1c c\u00e1ch t\u1ed1t nh\u1ea5t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a Docker Image - ITviec Blog","description":"T\u00ecm hi\u1ec3u Docker Image l\u00e0 g\u00ec, c\u1ea5u tr\u00fac, c\u00e1ch ho\u1ea1t \u0111\u1ed9ng, l\u1ee3i \u00edch v\u00e0 c\u00e1ch t\u1ed1i \u01b0u Docker Image t\u1ed1t nh\u1ea5t cho m\u00f4i tr\u01b0\u1eddng production.","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\/docker-image-la-gi\/","og_locale":"vi_VN","og_type":"article","og_title":"Docker Image l\u00e0 g\u00ec: C\u00e1c c\u00e1ch t\u1ed1t nh\u1ea5t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a Docker Image","og_description":"N\u1ebfu b\u1ea1n t\u1eebng nghe \u0111\u1ebfn vi\u1ec7c \"\u0111\u00f3ng g\u00f3i\" \u1ee9ng d\u1ee5ng \u0111\u1ec3 ch\u1ea1y \u1edf b\u1ea5t c\u1ee9 \u0111\u00e2u, th\u00ec ch\u00ednh Docker Image l\u00e0 th\u1ee9 l\u00e0m n\u00ean \u0111i\u1ec1u \u0111\u00f3. Docker Image l\u00e0 n\u1ec1n t\u1ea3ng c\u1ed1t l\u00f5i gi\u00fap","og_url":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2025-06-30T08:21:34+00:00","article_modified_time":"2025-06-30T08:53:12+00:00","og_image":[{"width":2560,"height":1347,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-vippro-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\/docker-image-la-gi\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/"},"author":{"name":"Hi\u1ebfu Phan","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/d9f4dfc3237d95eb1549e5adb2ede904"},"headline":"Docker Image l\u00e0 g\u00ec: C\u00e1c c\u00e1ch t\u1ed1t nh\u1ea5t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a Docker Image","datePublished":"2025-06-30T08:21:34+00:00","dateModified":"2025-06-30T08:53:12+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/"},"wordCount":4799,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-vippro-scaled.png","articleSection":["Chuy\u00ean m\u00f4n IT"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/","url":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/","name":"Docker Image l\u00e0 g\u00ec: C\u00e1c c\u00e1ch t\u1ed1t nh\u1ea5t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a Docker Image - ITviec Blog","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-vippro-scaled.png","datePublished":"2025-06-30T08:21:34+00:00","dateModified":"2025-06-30T08:53:12+00:00","description":"T\u00ecm hi\u1ec3u Docker Image l\u00e0 g\u00ec, c\u1ea5u tr\u00fac, c\u00e1ch ho\u1ea1t \u0111\u1ed9ng, l\u1ee3i \u00edch v\u00e0 c\u00e1ch t\u1ed1i \u01b0u Docker Image t\u1ed1t nh\u1ea5t cho m\u00f4i tr\u01b0\u1eddng production.","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/docker-image-la-gi\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-vippro-scaled.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/docker-image-vippro-scaled.png","width":2560,"height":1347,"caption":"docker image l\u00e0 g\u00ec - itviec blog"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/docker-image-la-gi\/#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 Image l\u00e0 g\u00ec: C\u00e1c c\u00e1ch t\u1ed1t nh\u1ea5t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a Docker Image"}]},{"@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\/88706","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=88706"}],"version-history":[{"count":3,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/88706\/revisions"}],"predecessor-version":[{"id":88720,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/88706\/revisions\/88720"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/88714"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=88706"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=88706"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=88706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}