{"id":57,"date":"2022-09-16T13:13:20","date_gmt":"2022-09-16T08:43:20","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=57"},"modified":"2024-10-24T15:58:16","modified_gmt":"2024-10-24T12:28:16","slug":"increasing-the-build-speed-of-docker-images","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/increasing-the-build-speed-of-docker-images\/","title":{"rendered":"\u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u0628\u06cc\u0644\u062f \u0627\u06cc\u0645\u06cc\u062c \u0647\u0627\u06cc \u062f\u0627\u06a9\u0631"},"content":{"rendered":"<p>\u062a\u0648\u06cc \u0627\u06cc\u0646 \u067e\u0633\u062a \u0642\u0631\u0627\u0631\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u062f\u0648 \u062a\u0627 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0632\u06cc\u0628\u0627\u06cc \u062f\u0627\u06a9\u0631 \u06cc\u0639\u0646\u06cc buildkit \u0648 buildx \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645<\/p>\n<p>buildkit \u0686\u06cc\u0647\u061f<\/p>\n<p>\u06cc\u0647 \u067e\u0631\u0648\u0698\u0647 \u0631\u0648\u06cc \u062f\u0627\u06a9\u0631 \u06a9\u0647 \u0628\u0647\u062a\u0648\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0647 \u0647\u0646\u06af\u0627\u0645 \u0628\u06cc\u0644\u062f \u0627\u06cc\u0645\u06cc\u062c \u0647\u0627 \u0627\u0646\u0648\u0627\u0639\u06cc \u0627\u0632 \u0648\u0644\u06cc\u0648\u0645 \u0647\u0627 \u0631\u0648 \u0628\u0647 \u0644\u0627\u06cc\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u062e\u062a\u0635\u0627\u0635 \u0628\u062f\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0634\u060c \u0633\u06a9\u0631\u062a \u0647\u0627 \u0648 \u0648\u0644\u06cc\u0648\u0645 \u0647\u0627\u06cc \u0639\u0627\u062f\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0633<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0634\u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u062d\u062a\u06cc \u067e\u06a9\u06cc\u062c\u0631 \u0647\u0627 \u0631\u0648 \u0647\u0645 \u06a9\u0634 \u06a9\u0646\u06cc\u062f \u062d\u062a\u06cc \u0627\u06af\u0647 \u067e\u06a9\u06cc\u062c \u0647\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0646 \u06cc\u0627 \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u0627\u0632\u0627\u06cc\u0647 \u0647\u0631 \u0644\u0627\u06cc\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0646\u062a\u0648\u0631\u06a9 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u06af\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0644\u0648\u0646 \u06a9\u0631\u062f\u0646 \u06cc\u0647 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc \u0645\u0648\u0642\u0639 \u0628\u06cc\u0644\u062f \u062f\u0627\u0631\u06cc\u062f \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u0648\u0646 \u0644\u0627\u06cc\u0647 \u062e\u0627\u0635 \u0633\u06a9\u0631\u062a \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/p>\n<p>buildx \u0686\u06cc\u0647\u061f<\/p>\n<p>buildx \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0642\u062f\u0631\u062a buildkit \u0628\u06cc\u0634\u062a\u0631 \u0628\u0634\u0647<br \/>\n\u0648 \u062e\u0648\u0628 \u0647\u0645\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0627\u0648\u0646 \u0631\u0648 \u0647\u0645 \u062f\u0627\u0631\u0647<br \/>\n\u0645\u062b\u0644\u0627<\/p>\n<p>\u06f1. \u0627\u0646\u0648\u0627\u0639 \u0628\u06cc\u0644\u062f\u0631 \u0647\u0627 (\u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0632\u060c qemu\/kvm \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627 \u0628\u0631\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u0633\u0627\u0632\u06cc \u0633\u06cc \u067e\u06cc \u06cc\u0648 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0648 muli-arch build \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0627\u06a9\u0631 \u0648 \u062f\u0627\u06a9\u0631)<br \/>\n\u06f2. \u062e\u0631\u0648\u062c\u06cc \u06af\u0631\u0641\u062a\u0646 \u0627\u0632 \u06a9\u0634 (\u0631\u062c\u06cc\u0633\u062a\u0631\u06cc \u06cc\u0627 \u0641\u0627\u06cc\u0644 \u0644\u0648\u06a9\u0627\u0644)<br \/>\n\u06f3. \u067e\u0648\u0634 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u06cc\u0645\u06cc\u062c \u0647\u0627 \u0648 \u06a9\u0634 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0639\u062f \u0627\u0632 \u0628\u06cc\u0644\u062f<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0633\u0631\u0639\u062a \u0631\u0648 \u062a\u0627 \u06f6 \u0628\u0631\u0627\u0628\u0631 \u0632\u06cc\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u062e\u0628 \u062a\u0648\u0636\u06cc\u062d \u06a9\u0627\u0641\u06cc\u0647 \u0628\u0631\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/p>\n<p>\u0628\u0631\u0627\u06cc buildkit<\/p>\n<p>\u0628\u0647 \u062f\u0648 \u0631\u0648\u0634 \u0627\u06cc\u0646 \u0631\u0648 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0627\u0648\u0644\u06cc\u0646 \u0631\u0627\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc DOCKER_BUILDKIT=1<\/p>\n<p>\u0648 \u062f\u0648\u0645\u06cc\u0646 \u0631\u0627\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0628\u062e\u0634 \u0632\u06cc\u0631 \u0628\u0647 \u0641\u0627\u06cc\u0644 \/etc\/docker\/daemon.json \u0648 \u0631\u06cc\u0633\u062a\u0627\u0631\u062a \u06a9\u0631\u062f\u0646 \u06a9\u0644 \u062f\u0627\u06a9\u0631<\/p>\n<p>{<br \/>\n&#8220;features&#8221;:<br \/>\n{<br \/>\n&#8220;buildkit&#8221;: true<br \/>\n}<br \/>\n}<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u0648\u0633\u062a\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0628\u0647 \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645<br \/>\n\u0648 \u0646\u0633\u062e\u0647 \u062f\u0627\u06a9\u0631 \u0628\u0627\u06cc\u062f 18.09 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631 \u0628\u0627\u0634\u062f<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627 \u06cc\u0647 \u0646\u0645\u0648\u0646\u0647 \u062f\u0627\u06a9\u0631\u0641\u0627\u06cc\u0644 \u062f\u0627\u0631\u06cc\u0645 \u0628\u0631\u0627\u06cc \u06a9\u0634 \u06a9\u0631\u062f\u0646 \u067e\u06a9\u06cc\u062c \u0645\u0646\u06cc\u062c\u0631 apt<\/p>\n<p># syntax = docker\/dockerfile:1.3<br \/>\nFROM debian<br \/>\nRUN rm -f \/etc\/apt\/apt.conf.d\/docker-clean; echo &#8216;Binary::apt::APT::Keep-Downloaded-Packages &#8220;true&#8221;;&#8217; &gt; \/etc\/apt\/apt.conf.d\/keep-cache<br \/>\nRUN &#8211;mount=type=cache,target=\/var\/cache\/apt &#8211;mount=type=cache,target=\/var\/lib\/apt \\<br \/>\napt update &amp;&amp; apt-get &#8211;no-install-recommends install -y gcc<\/p>\n<p>\u0628\u062e\u0634 syntax = docker\/dockerfile:1.3 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u0646\u062f\u0647 \u067e\u0648\u0633\u062a\u0647 syntax \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0645\u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0646\u0633\u062e\u0647 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0631\u0648 \u0627\u0632 docker hub \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f<br \/>\n\u06cc\u0647 \u062c\u0648\u0631\u0627\u06cc\u06cc \u0645\u062b\u0644 shebang \u062a\u0648\u06cc bash<\/p>\n<p>\u0628\u0631\u0627\u06cc buildx<\/p>\n<p>\u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 buildx \u0631\u0648 \u0627\u0632 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f<br \/>\nhttps:\/\/github.com\/docker\/buildx\/releases\/latest<br \/>\n\u0628\u0639\u062f \u0627\u0648\u0646 \u0631\u0648 \u062a\u0648\u06cc \u0628\u0647 \u0627\u0633\u0645<br \/>\n~\/.docker\/cli-plugins\/docker-buildx<br \/>\n\u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n\u0648 \u0628\u0647\u0634 \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u062c\u0631\u0627 \u0628\u062f\u06cc\u062f<br \/>\nchmod a+x ~\/.docker\/cli-plugins\/docker-buildx<\/p>\n<p>\u0646\u06a9\u0646\u0647: \u0641\u0642\u0637 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc CE \u0648 EE \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u0634\u0647 \u0648 \u0627\u0632 docker.io \u0646\u0645\u06cc\u0634\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627 \u0647\u0645 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u06a9\u0627\u0645\u0644 buildx \u0631\u0648 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f<br \/>\nhttps:\/\/docs.docker.com\/engine\/reference\/commandline\/buildx\/<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0647\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0627\u0632 \u0628\u06cc\u0644\u062f\u0631 \u067e\u06cc\u0634\u0641\u0631\u0636 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0648 \u0633\u0627\u062e\u062a \u0628\u06cc\u0644\u062f\u0631 \u062e\u0648\u062f\u062a\u0648\u0646 \u0631\u0648 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u06a9\u0646\u06cc\u0645<\/p>\n<p>\u0645\u0646 \u0628\u0647\u062a\u0648\u0646 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u06a9\u0646\u0645 \u06a9\u0647 \u0627\u0632 \u0628\u06cc\u0644\u062f\u0631 \u0647\u0627\u06cc \u062f\u0627\u06a9\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0648 \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0631\u0627\u062d\u062a\u062a\u0631 \u0628\u062a\u0648\u0646\u06cc\u062f \u0627\u0648\u0646\u0627 \u0631\u0648 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0646\u06cc\u062f<\/p>\n<div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>\u062a\u0648\u06cc \u0627\u06cc\u0646 \u067e\u0633\u062a \u0642\u0631\u0627\u0631\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u062f\u0648 \u062a\u0627 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0632\u06cc\u0628\u0627\u06cc \u062f\u0627\u06a9\u0631 \u06cc\u0639\u0646\u06cc buildkit \u0648 buildx \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645 buildkit \u0686\u06cc\u0647\u061f \u06cc\u0647 \u067e\u0631\u0648\u0698\u0647 \u0631\u0648\u06cc \u062f\u0627\u06a9\u0631 \u06a9\u0647 \u0628\u0647\u062a\u0648\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0647 \u0647\u0646\u06af\u0627\u0645 \u0628\u06cc\u0644\u062f \u0627\u06cc\u0645\u06cc\u062c \u0647\u0627 \u0627\u0646\u0648\u0627\u0639\u06cc \u0627\u0632 \u0648\u0644\u06cc\u0648\u0645 \u0647\u0627 \u0631\u0648 \u0628\u0647 \u0644\u0627\u06cc\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u062e\u062a\u0635\u0627\u0635 \u0628\u062f\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0634\u060c \u0633\u06a9\u0631\u062a \u0647\u0627 \u0648 \u0648\u0644\u06cc\u0648\u0645 \u0647\u0627\u06cc \u0639\u0627\u062f\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0633 \u0628\u0627 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":61,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[142,131],"tags":[139,140,141,143],"class_list":["post-57","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-142","category-131","tag-139","tag-140","tag-141","tag-143"],"aioseo_notices":[],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/57","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=57"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/57\/revisions"}],"predecessor-version":[{"id":5270,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/57\/revisions\/5270"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/61"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}