paint-brush
Ny fanatsarana ny sary Docker dia mihoatra noho ny zavatra iray sy vitany@aleksandrov
Tantara vaovao

Ny fanatsarana ny sary Docker dia mihoatra noho ny zavatra iray sy vita

ny Igor Alexandrov17m2025/01/30
Read on Terminal Reader

Lava loatra; Mamaky

Ity lahatsoratra ity dia ampahany amin'ny andian-dahatsoratra izay handehanako amin'ny andalana rehetra amin'ny Dockerfile default ary hanazava ny fomba fanao tsara indrindra sy ny fanatsarana. Ny lahatsoratra voalohany dia tsy hikasika afa-tsy ny fampihenana ny haben'ny sary.
featured image - Ny fanatsarana ny sary Docker dia mihoatra noho ny zavatra iray sy vita
Igor Alexandrov HackerNoon profile picture
0-item


Ity lahatsoratra ity dia ampahany amin'ny andian-dahatsoratra izay handehanako amin'ny andalana tsirairay amin'ny Rails default Dockerfile ary hanazava ny fomba fanao tsara indrindra sy ny fanatsarana.


Ny sary Docker dia azo amboarina amin'ny fomba isan-karazany izay ahitana, fa tsy voafetra amin'ny, fampihenana ny haben'ny sary, fananganana fanatsarana ny fampisehoana, fiarovana, ary fomba fanao tsara indrindra amin'ny fikojakojana, ary fanatsarana manokana amin'ny fampiharana. Ao amin'ny lahatsoratra voalohany dia tsy hikasika afa-tsy ny fampihenana ny haben'ny sary aho ary hanazava ny antony maha-zava-dehibe azy ireo.

Nahoana no manatsara ny haben'ny sary?

Tahaka ny amin'ny dingana hafa rehetra amin'ny fampivoarana rindrambaiko, ny mpamorona tsirairay dia mitanisa ny antony tiany hahatonga ny Docker hanangana haingana kokoa. Tanisaiko ireo antony manan-danja indrindra amiko.

Fananganana sy fametrahana haingana kokoa

Ny sary kely kokoa dia haingana kokoa ny fananganana satria vitsy kokoa ny rakitra sy ny sosona tokony hokarakaraina. Izany dia manatsara ny famokarana developer, indrindra mandritra ny tsingerin'ny fampandrosoana miverimberina. Ny sary kely kokoa dia maka fotoana kely hanosehana any amin'ny rejisitra ary hisintona azy mandritra ny fametrahana. Manakiana indrindra izany amin'ny fantsona CI/CD izay amboarina sy apetraka matetika ny kaontenera.

Ahena ny vidin'ny fitehirizana sy ny fampiasana bandwidth tambazotra

Ny sary kely kokoa dia mandany fitehirizana kely kokoa amin'ny rejisitra kaontenera, milina fampandrosoana eo an-toerana, ary lohamilina famokarana. Mampihena ny vidin'ny fotodrafitrasa izany, indrindra ho an'ny fametrahana lehibe. Ny sary kely kokoa dia mampiasa bandwidth kely kokoa rehefa afindra eo amin'ny mpizara, indrindra rehefa manangana sary eo an-toerana ianao na amin'ny fantsona CI/CD ary manosika azy ireo ho any amin'ny rejisitra.


"Nandany $3.2m tamin'ny rahona izahay tamin'ny taona 2022... Mijoro eo amin'ny $7m eo ho eo amin'ny fandaniana amin'ny serivisy izahay mandritra ny dimy taona avy amin'ny fivoahana rahona." David Heinemeier Hansson — HEY World

Fanatsarana sy fiarovana

Ny sary kely kokoa dia mitaky loharanon-karena vitsy kokoa (oh: CPU, RAM) hametahana sy hampandeha azy, hanatsarana ny fampandehanana ankapobeny ny fampiharana voatahiry. Ny fotoana fanombohana haingana kokoa dia midika fa vonona haingana kokoa ny serivisyo, izay tena zava-dehibe amin'ny rafitra scaling sy avo lenta. Ny sary fototra faran'izay kely indrindra toa alpine na debian-slim dia misy fonosana efa napetraka mialoha, mampihena ny mety hisian'ny rindrambaiko tsy voafehy na tsy ilaina.


Ankoatra izay rehetra voalaza etsy ambony, ny fanesorana ireo rakitra sy fitaovana tsy ilaina dia manamaivana ny fanelingelenana rehefa mamantatra olana ary mitarika amin'ny fikojakojana tsara kokoa sy fampihenana ny trosa ara-teknika.

Fanaraha-maso ny sary Docker

Mba hahazoana mari-pamantarana samihafa amin'ny sary, anisan'izany ny habeny, azonao atao ny mijery ny Docker Desktop na mampandeha ny baiko docker images ao amin'ny terminal.


 ➜ docker images REPOSITORY TAG IMAGE ID CREATED SIZE kamal-dashboard latest 673737b771cd 2 days ago 619MB kamal-proxy latest 5f6cd8983746 6 weeks ago 115MB docs-server latest a810244e3d88 6 weeks ago 1.18GB busybox latest 63cd0d5fb10d 3 months ago 4.04MB postgres latest 6c9aa6ecd71d 3 months ago 456MB postgres 16.4 ced3ad69d60c 3 months ago 453MB


Ny fahafantarana ny haben'ny sary dia tsy manome anao ny sary feno. Tsy fantatrao izay ao anatin'ilay sary, firy ny sosona misy azy, na ny haben'ny sosona tsirairay. Ny sarin'ny Docker dia sarin'ny rafitra rakitra tsy azo ovaina , izay singa iray amin'ny sary Docker. Ny sosona tsirairay dia maneho andiana fanovana natao tamin'ny rafitry ny fisie an'ilay sary, toy ny fampidirana fisie, fanovana ny tefy, na fametrahana rindrambaiko.


Ny sary Docker dia amboarina tsikelikely, isaky ny sosona, ary ny sosona tsirairay dia mifanaraka amin'ny torolàlana ao amin'ny Dockerfile . Mba hahazoana ny sarin'ny sary dia azonao atao ny mampandeha ny baikon'ny docker history .


 ➜ docker history kamal-dashboard:latest IMAGE CREATED CREATED BY SIZE COMMENT 673737b771cd 4 days ago CMD ["./bin/thrust" "./bin/rails" "server"] 0B buildkit.dockerfile.v0 <missing> 4 days ago EXPOSE map[80/tcp:{}] 0B buildkit.dockerfile.v0 <missing> 4 days ago ENTRYPOINT ["/rails/bin/docker-entrypoint"] 0B buildkit.dockerfile.v0 <missing> 4 days ago USER 1000:1000 0B buildkit.dockerfile.v0 <missing> 4 days ago RUN /bin/sh -c groupadd --system --gid 1000 … 54MB buildkit.dockerfile.v0 <missing> 4 days ago COPY /rails /rails # buildkit 56.2MB buildkit.dockerfile.v0 <missing> 4 days ago COPY /usr/local/bundle /usr/local/bundle # b… 153MB buildkit.dockerfile.v0 <missing> 4 days ago ENV RAILS_ENV=production BUNDLE_DEPLOYMENT=1… 0B buildkit.dockerfile.v0 <missing> 4 days ago RUN /bin/sh -c apt-get update -qq && apt… 137MB buildkit.dockerfile.v0 <missing> 4 days ago WORKDIR /rails 0B buildkit.dockerfile.v0 <missing> 3 weeks ago CMD ["irb"] 0B buildkit.dockerfile.v0 <missing> 3 weeks ago RUN /bin/sh -c set -eux; mkdir "$GEM_HOME";… 0B buildkit.dockerfile.v0 <missing> 3 weeks ago ENV PATH=/usr/local/bundle/bin:/usr/local/sb… 0B buildkit.dockerfile.v0 <missing> 3 weeks ago ENV BUNDLE_SILENCE_ROOT_WARNING=1 BUNDLE_APP… 0B buildkit.dockerfile.v0 <missing> 3 weeks ago ENV GEM_HOME=/usr/local/bundle 0B buildkit.dockerfile.v0 <missing> 3 weeks ago RUN /bin/sh -c set -eux; savedAptMark="$(a… 78.1MB buildkit.dockerfile.v0 <missing> 3 weeks ago ENV RUBY_DOWNLOAD_SHA256=018d59ffb52be3c0a6d… 0B buildkit.dockerfile.v0 <missing> 3 weeks ago ENV RUBY_DOWNLOAD_URL=https://cache.ruby-lan… 0B buildkit.dockerfile.v0 <missing> 3 weeks ago ENV RUBY_VERSION=3.4.1 0B buildkit.dockerfile.v0 <missing> 3 weeks ago ENV LANG=C.UTF-8 0B buildkit.dockerfile.v0 <missing> 3 weeks ago RUN /bin/sh -c set -eux; mkdir -p /usr/loca… 19B buildkit.dockerfile.v0 <missing> 3 weeks ago RUN /bin/sh -c set -eux; apt-get update; a… 43.9MB buildkit.dockerfile.v0 <missing> 3 weeks ago # debian.sh --arch 'arm64' out/ 'bookworm' '… 97.2MB debuerreotype 0.15


Satria efa nanome teoria momba ny sary sy ny sosona aho, fotoana izao hijerena ny Dockerfile . Manomboka amin'ny Rails 7.1, ny Dockerfile dia noforonina miaraka amin'ny rindranasa Rails vaovao. Ity ambany ity ny ohatra iray amin'ny mety ho endriky ny azy.


 # syntax=docker/dockerfile:1 # check=error=true # Make sure RUBY_VERSION matches the Ruby version in .ruby-version ARG RUBY_VERSION=3.4.1 FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base # Rails app lives here WORKDIR /rails # Install base packages # Replace libpq-dev with sqlite3 if using SQLite, or libmysqlclient-dev if using MySQL RUN apt-get update -qq && \ apt-get install --no-install-recommends -y curl libjemalloc2 libvips libpq-dev && \ rm -rf /var/lib/apt/lists /var/cache/apt/archives # Set production environment ENV RAILS_ENV="production" \ BUNDLE_DEPLOYMENT="1" \ BUNDLE_PATH="/usr/local/bundle" \ BUNDLE_WITHOUT="development" # Throw-away build stage to reduce size of final image FROM base AS build # Install packages needed to build gems RUN apt-get update -qq && \ apt-get install --no-install-recommends -y build-essential curl git pkg-config libyaml-dev && \ rm -rf /var/lib/apt/lists /var/cache/apt/archives # Install application gems COPY Gemfile Gemfile.lock ./ RUN bundle install && \ rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git && \ bundle exec bootsnap precompile --gemfile # Copy application code COPY . . # Precompile bootsnap code for faster boot times RUN bundle exec bootsnap precompile app/ lib/ # Precompiling assets for production without requiring secret RAILS_MASTER_KEY RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile # Final stage for app image FROM base # Copy built artifacts: gems, application COPY --from=build "${BUNDLE_PATH}" "${BUNDLE_PATH}" COPY --from=build /rails /rails # Run and own only the runtime files as a non-root user for security RUN groupadd --system --gid 1000 rails && \ useradd rails --uid 1000 --gid 1000 --create-home --shell /bin/bash && \ chown -R rails:rails db log storage tmp USER 1000:1000 # Entrypoint prepares the database. ENTRYPOINT ["/rails/bin/docker-entrypoint"] # Start server via Thruster by default, this can be overwritten at runtime EXPOSE 80 CMD ["./bin/thrust", "./bin/rails", "server"]


Eto ambany aho dia hanome lisitr'ireo fomba fiasa sy fitsipika izay ampiharina amin'ny Dockerfile etsy ambony mba hahombiazana ny haben'ny sary farany.

Optimize ny fametrahana fonosana

Azoko antoka fa tsy mitazona afa-tsy rindrambaiko ilaina amin'ny milina fampandrosoana eo an-toerana ianao. Toy izany koa no tokony hampiharina amin'ny sary Docker. Ao amin'ireo ohatra etsy ambany dia hanaratsy hatrany ny Dockerfile nalaina tao amin'ny Rails Dockerfile etsy ambony aho. Hantsoiko ho dikan-teny Dockerfile tany am-boalohany .

Fitsipika #1: Mampiasà sary fototra kely indrindra

 FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base


Ny sary fototra no teboka fanombohana ny Dockerfile . Izy io no sary ampiasaina hamoronana ny fitoeran-javatra. Ny sary fototra no sosona voalohany ao amin'ny Dockerfile , ary io no hany sosona tsy noforonin'ny Dockerfile mihitsy.


Ny sary fototra dia voafaritra miaraka amin'ny baiko FROM , arahin'ny anaran'ny sary sy ny marika. Ny tenifototra dia tsy voatery, ary raha tsy voafaritra dia ny marika latest no ampiasaina. Ny sary fototra dia mety ho sary misy ao amin'ny Docker Hub na rejisitra hafa.


Ao amin'ny Dockerfile momba, dia mampiasa ny sary ruby miaraka amin'ny marika 3.4.1-slim izahay. Ny sary ruby dia ny sary Ruby ofisialy hita ao amin'ny Docker Hub. Ny marika 3.4.1-slim dia dika manify amin'ny sary Ruby izay mifototra amin'ny sary debian-slim . Raha ny sary debian-slim dia dika kely indrindra amin'ny sary Debian Linux izay natao ho an'ny habe. Jereo ny tabilao etsy ambany mba hahitanao ny fahavitsian'ny sary slim .


 ➜ docker images --filter "reference=ruby" REPOSITORY TAG IMAGE ID CREATED SIZE ruby 3.4.1-slim 0bf957e453fd 5 days ago 219MB ruby 3.4.1-alpine cf9b1b8d4a0c 5 days ago 99.1MB ruby 3.4.1-bookworm 1e77081540c0 5 days ago 1.01GB


Tamin'ny Janoary 2024, ny famoahana Debian ankehitriny dia antsoina hoe bookworm ary ny teo aloha dia bullseye .


219 MB fa tsy 1GB — fahasamihafana lehibe. Ahoana anefa raha kely kokoa ny sarin'ny alpine ? Ny sary alpine dia mifototra amin'ny fizarana Alpine Linux, izay fizarana Linux tena maivana izay natao ho an'ny habe sy ny fiarovana. Alpine dia mampiasa ny tranomboky musl (fa tsy glibc ) sy busybox (sehatra kofehin'ny fitaovana Unix) fa tsy ny GNU. Na dia azo atao ara-teknika aza ny mampiasa ny sary alpine hampandehanana ny Rails, dia tsy holazaiko amin'ity lahatsoratra ity izany.

Fitsipika #2: Manamaivana ny sosona

 RUN apt-get update -qq && \ apt-get install --no-install-recommends -y curl libjemalloc2 libvips libpq-dev && \ rm -rf /var/lib/apt/lists /var/cache/apt/archives


Ny torolàlana RUN , COPY ary FROM ao amin'ny Dockerfile dia mamorona sosona vaovao. Arakaraka ny sosona anananao no lehibe kokoa ny haben'ny sary. Izany no mahatonga ny fomba fanao tsara indrindra dia ny manambatra baiko maromaro ao anaty fampianarana RUN tokana. Mba hanazavana io hevitra io, andeha hojerentsika ny ohatra etsy ambany.


 # syntax=docker/dockerfile:1 # check=error=true # Make sure RUBY_VERSION matches the Ruby version in .ruby-version ARG RUBY_VERSION=3.4.1 FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base RUN apt-get update -qq RUN apt-get install --no-install-recommends -y curl RUN apt-get install --no-install-recommends -y libjemalloc2 RUN apt-get install --no-install-recommends -y libvips RUN apt-get install --no-install-recommends -y libpq-dev RUN rm -rf /var/lib/apt/lists /var/cache/apt/archives CMD ["echo", "Whalecome!"]


Nozaraiko ho andalana maromaro ny torolàlana RUN , izay mazava ho azy fa mahatonga azy ireo ho mora vakiana kokoa. Ahoana anefa no hisy fiantraikany amin'ny haben'ny sary? Andao hamboarintsika ny sary ary hojerentsika izany.


 ➜ time docker build -t no-minimize-layers --no-cache -f no-minimize-layers.dockerfile . 0.31s user 0.28s system 2% cpu 28.577 total


Naharitra 28 segondra ny fananganana ilay sary, raha 19 segondra monja ny fananganana ny dikan-teny tany am-boalohany miaraka amin'ny sosona faran'izay kely ( efa ho 33% haingana kokoa ).


 ➜ time docker build -t original --no-cache -f original.dockerfile . 0.25s user 0.28s system 2% cpu 19.909 total


Andeha hojerentsika ny haben'ny sary.


 ➜ docker images --filter "reference=*original*" --filter "reference=*no-minimize*" REPOSITORY TAG IMAGE ID CREATED SIZE original latest f1363df79c8a 8 seconds ago 356MB no-minimize-layers latest ad3945c8a8ee 43 seconds ago 379MB


Ny sary miaraka amin'ny sosona faran'izay kely dia 23 MB kely kokoa noho ilay tsy misy sosona kely kokoa. Izany dia fampihenana 6% ny habeny . Na dia toa misy fahasamihafana kely amin'ity ohatra ity aza, dia ho lehibe kokoa ny fahasamihafana raha mizara ny torolàlana RUN rehetra ho andalana maromaro ianao.

Fitsipika #3: Apetraho izay ilaina ihany

Amin'ny alàlan'ny default, apt-get install dia mametraka ny fonosana natolotra ary koa ny fonosana nasainao hapetraka. Ny safidy --no-install-recommends dia milaza apt-get mba hametraka afa-tsy ireo fonosana voatondro mazava fa tsy ireo soso-kevitra.


 ➜ time docker build -t without-no-install-recommends --no-cache -f without-no-install-recommends.dockerfile . 0.33s user 0.30s system 2% cpu 29.786 total ➜ docker images --filter "reference=*original*" --filter "reference=*recommends*" REPOSITORY TAG IMAGE ID CREATED SIZE without-no-install-recommends latest 41e6e37f1e2b 3 minutes ago 426MB minimize-layers latest dff22c85d84c 17 minutes ago 356MB


Araka ny hitanao, ny sary tsy misy --no-install-recommends dia 70 MB lehibe kokoa noho ny voalohany . Izany dia fitomboana 16% amin'ny habeny .


Mampiasà fitaovana antsitrika hijerena izay rakitra nampidirina amin'ny sary - vakio bebe kokoa momba izany any amin'ny faran'ny lahatsoratra.

Fitsipika #4: Manadio aorian'ny fametrahana

Ny Dockerfile tany am-boalohany dia ahitana ny baiko rm -rf /var/lib/apt/lists/* /var/cache/apt/archives aorian'ny baiko apt-get install . Ity baiko ity dia manaisotra ny lisitry ny fonosana sy ny arisiva izay tsy ilaina intsony aorian'ny fametrahana. Andeha hojerentsika ny fiantraikan'izany amin'ny haben'ny sary, mba hahatratrarana izany dia hamorona Dockerfile vaovao aho tsy misy baiko fanadiovana .


 RUN apt-get update -qq && \ apt-get install --no-install-recommends -y curl libjemalloc2 libvips libpq-dev


Ny fananganana ny sary dia saika mitovy ny fotoana amin'ny voalohany, izay misy dikany.


 ➜ time docker build -t without-cleaning --no-cache -f without-cleaning.dockerfile . 0.28s user 0.30s system 2% cpu 21.658 total


Andeha hojerentsika ny haben'ny sary.


 ➜ docker images --filter "reference=*original*" --filter "reference=*cleaning*" REPOSITORY TAG IMAGE ID CREATED SIZE without-cleaning latest 52884fe50773 2 minutes ago 375MB original latest f1363df79c8a 16 minutes ago 356MB


Ny sary tsy misy fanadiovana dia 19 MB lehibe kokoa noho ilay misy fanadiovana, izany dia fitomboana 5% amin'ny habeny .

Ny scenario ratsy indrindra

Ahoana raha tsy ampiharina ireo fanatsarana efatra voalaza etsy ambony ireo? Andao hamorona Dockerfile vaovao tsy misy fanatsarana ary hanangana ny sary.


 # syntax=docker/dockerfile:1 # check=error=true ARG RUBY_VERSION=3.4.1 FROM docker.io/library/ruby:$RUBY_VERSION AS base RUN apt-get update -qq RUN apt-get install -y curl RUN apt-get install -y libjemalloc2 RUN apt-get install -y libvips RUN apt-get install -y libpq-dev CMD ["echo", "Whalecome!"]


 ➜ time docker build -t without-optimizations --no-cache -f without-optimizations.dockerfile . 0.46s user 0.45s system 1% cpu 1:02.21 total


Oay, naharitra iray minitra mahery ny fanamboarana ilay sary.


 ➜ docker images --filter "reference=*original*" --filter "reference=*without-optimizations*" REPOSITORY TAG IMAGE ID CREATED SIZE without-optimizations latest 45671929c8e4 2 minutes ago 1.07GB original latest f1363df79c8a 27 hours ago 356MB


Ny sary tsy misy fanatsarana dia 714 MB lehibe kokoa noho ny tany am-boalohany, izany dia fitomboana 200% amin'ny habeny . Izany dia mampiseho mazava ny maha-zava-dehibe ny fanatsarana ny Dockerfile , ny sary lehibe kokoa dia mitaky fotoana bebe kokoa hanamboarana sy handaniana toerana malalaka kokoa.

Ampiasao foana ny .dockerignore

Ny rakitra .dockerignore dia mitovy amin'ny rakitra .gitignore ampiasain'ny Git. Izy io dia ampiasaina hanilika ny rakitra sy ny lahatahiry amin'ny tontolon'ny fananganana. Ny contexte dia fitambarana rakitra sy lahatahiry alefa any amin'ny daemon Docker rehefa manangana sary. Ny contexte dia alefa any amin'ny daemon Docker ho toy ny tarball, noho izany dia zava-dehibe ny mitazona azy ho kely araka izay azo atao.


Raha toa ka tsy manana ny rakitra .dockerignore ao amin'ny tetikasanao ianao, na inona na inona antony, dia azonao atao ny mamorona azy amin'ny tanana. Manoro hevitra anao aho hampiasa ny maodelin'ny rakitra Rails .dockerignore ho fanombohana. Ity ambany ity ny ohatra iray amin'ny mety ho endriky ny azy.


 # See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files. # Ignore git directory. /.git/ /.gitignore # Ignore bundler config. /.bundle # Ignore all environment files. /.env* # Ignore all default key files. /config/master.key /config/credentials/*.key # Ignore all logfiles and tempfiles. /log/* /tmp/* !/log/.keep !/tmp/.keep # Ignore pidfiles, but keep the directory. /tmp/pids/* !/tmp/pids/.keep # Ignore storage (uploaded files in development and any SQLite databases). /storage/* !/storage/.keep /tmp/storage/* !/tmp/storage/.keep # Ignore assets. /node_modules/ /app/assets/builds/* !/app/assets/builds/.keep /public/assets # Ignore CI service files. /.github # Ignore development files /.devcontainer # Ignore Docker-related files /.dockerignore /Dockerfile*


Ny fananana rakitra .dockerfile ao amin'ny tetikasa dia tsy mamela afa-tsy ny manilika ny rakitra sy ny lahatahiry tsy ilaina (oh: GitHub workflows avy amin'ny lahatahiry .github na JavaScript miankina amin'ny node_modules ) avy amin'ny contexte. Manampy amin'ny fisorohana ny fampidirana tsy nahy fampahalalana mafampana amin'ny sary. Ohatra, ny rakitra .env izay misy ny fari-piainan'ny tontolo iainana na ny rakitra master.key izay ampiasaina hamongorana ny fahazoan-dàlana.

Mampiasa Dive

Ny fanatsarana rehetra voalaza etsy ambony dia mety ho toa miharihary rehefa hazavaina. Inona no tokony hatao raha efa manana sary goavana ianao, ary tsy fantatrao hoe aiza no hanombohana?


Ny fitaovana tiako indrindra sy mahasoa indrindra dia ny Dive . Dive dia fitaovana TUI hikarohana sary Docker, atiny sosona, ary fitadiavana fomba hampihenana ny haben'ny sary. Ny dive dia azo apetraka miaraka amin'ny mpitantana ny fonosanao, na azonao ampiasaina ny sarin'ny Docker ofisialy hampandehanana azy. Andao hampiasa ny sary avy amin'ny toe-javatra ratsy indrindra.


 docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive:latest without-optimizations 


Dive Docker layers inspect tool

Ao amin'ny pikantsary etsy ambony dia azonao jerena ny fisavana ny sary tsy mety indrindra. Ny dive dia mampiseho ny haben'ny sosona tsirairay, ny habe manontolon'ny sary ary ny rakitra novaina (nampiana, novaina, na nofafana) isaky ny sosona. Ho ahy, ity no endri-javatra mahasoa indrindra amin'ny Dive. Amin'ny alàlan'ny lisitra ireo rakitra ao amin'ny tontonana havanana, azonao atao ny mamantatra mora foana ireo rakitra tsy ilaina ary manala baiko izay manampy azy ireo amin'ny sary.


Ny zavatra iray tena tiako momba ny Dive dia ny hoe, ankoatry ny fananana UI terminal, dia afaka manome vokatra CI-namana ihany koa izy, izay mety hahomby amin'ny fampandrosoana eo an-toerana ihany koa. Raha hampiasa azy io dia andramo ny Dive miaraka amin'ny fari-piainan'ny tontolo iainana CI napetraka ho true , ny famoahana ny baiko dia ao amin'ny pikantsary etsy ambany.


 docker run -e CI=true --rm -it -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive:latest without-optimizations 


Dive CI-namana Output

Ny tiako manokana dia ny fampiasana Dive amin'ny fototra voalahatra, ohatra, indray mandeha isan-kerinandro, mba hahazoana antoka fa mbola ao anaty endrika tsara ny sarinao. Ao amin'ny lahatsoratra ho avy, dia handrakotra ny workflow mandeha ho azy aho hanamarina ny Dockerfile-ko, anisan'izany ny Dive sy Hadolint .

Aza squash sosona

Ny fomba iray hanamaivanana ny haben'ny sary hitako dia ny fiezahana mametaka ireo sosona. Ny hevitra dia ny hanambatra sosona maromaro ho sosona iray mba hampihenana ny haben'ny sary. Docker dia nanana safidy andrana --squash , ankoatr'izay dia nisy fitaovana hafa toy ny docker-squash .


Na dia niasa tamin'ny lasa aza io fomba fiasa io, amin'izao fotoana izao dia tsy ampiasaina ary tsy asaina ampiasaina. Ny squashing layer dia nandrava ny endri-javatra fototra an'i Docker momba ny caching layer. Ankoatra izany, raha mampiasa --squash ianao dia afaka mampiditra tsy nahy na rakitra saro-pady avy amin'ny sosona teo aloha amin'ny sary farany. Ity dia fomba iray na tsy misy na inona na inona izay tsy misy fanaraha-maso tsara.


Raha tokony ho squashing sosona, dia nanolorana azy ho mampiasa multi-dingana fananganana. Ny Rails Dockerfile dia efa mampiasa fananganana sehatra maromaro, hazavaiko ny fomba fiasany amin'ny lahatsoratra manaraka.

Fehiny

Ny fanatsarana ny sary Docker, toy ny fanatsarana hafa rehetra, dia tsy azo atao indray mandeha ary adino . Izany dia dingana mitohy izay mitaky fisavana sy fanatsarana tsy tapaka. Niezaka nanazava ny fototra aho, saingy tena ilaina ny mahafantatra sy mahazo azy. Ao amin'ny lahatsoratra manaraka dia handrakotra teknika sy fitaovana mandroso kokoa aho izay afaka manampy amin'ny fananganana ny Docker anao haingana kokoa sy mahomby kokoa.