در 16 ژوئیه ما آزمایشگاههای BuildKit 0.9.0 ، Docker Buildx 0.6.0 ، Dockerfile 1.3.0 و Dockerfile 1.3.0 را منتشر کردیم. این نسخه ها با رفع اشکال ، بهبود برابری ویژگی ها ، تغییر شکل و همچنین ویژگی های جدید ارائه می شوند. تصاویر مربوط به پیشخوان Dockerfile در مخزن docker/dockerfile موجود است.

برای استفاده از نمای خارجی خارجی ، اولین خط Dockerfile شما باید به تصویر خاصی که می خواهید استفاده کنید اشاره کند:

# syntax = docker/dockerfile: 1.3 

اطلاعات بیشتر: https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md

فرمان RUN اکنون -پرچم شبکه را پشتیبانی می کند [19659004] فرمان RUN از -پرچم شبکه برای درخواست نوع خاصی از شرایط شبکه (میزبان ، هیچ ، به طور پیش فرض) پشتیبانی می کند. این به کاربر اجازه می دهد تمام شبکه ها را در حین ساخت docker غیرفعال کند تا اطمینان حاصل شود که هیچ شبکه ای استفاده نمی شود ، یا شرکت در استفاده صریح از شبکه میزبان ، که قبل از این کار باید یک پرچم خاص تنظیم شود.

- network = host نیاز به اجازه network.host دارد. این ویژگی قبلاً فقط در کانال آزمایشگاه ها موجود بود:

# syntax = docker/dockerfile: 1.3
از پایتون: 3.6
افزودن mypackage.tgz wheelz/
RUN-شبکه = نصب هیچ لوله-پیدا کردن پیوندهای چرخ mypackage 

RUN -mount گسترش متغیر پرچم

مقادیر RUN -mount پرچم در حال حاضر از توسعه متغیر پشتیبانی می کند ، بجز زمینه از :

# syntax = docker/dockerfile: 1.3
از golang
...
ARG GO_CACHE_DIR =/root/.cache/go-build
RUN --mount = type = cache، target = $ GO_CACHE_DIR رفتن به ساخت ... 

نحو اینجا-سند

دستورات RUN و COPY اکنون از نحو سند اینجا پشتیبانی می کند اجازه نوشتن اسکریپت ها و فایل های خطی چند خطی (کانال آزمایشگاه ها) بدون تعداد زیادی && و کاراکتر:

قبل از:

# syntax = docker/dockerfile: 1.3
از debian
RUN apt-get update 
  && apt-get install -y vim 

با نحو جدید سند اینجا:

# syntax = docker/dockerfile: 1.3-labs
از debian
ROT << eot bash
  apt-get update
  apt -get install -y vim
eot 

در دستورات COPY پارامترهای منبع را می توان با نشانگرهای here-doc جایگزین کرد. قوانین متداول بسط متغیر و جدا کردن برگه ها در اینجا اعمال می شود:

# syntax = docker/dockerfile: 1.3-labs
از کوه آلپ
ARG FOO = نوار
کپی <<-eot /app /foo
  سلام $ {FOO}
eot 

اطلاعات بیشتر در مورد مخزن BuildKit.

ارائه دهندگان OpenTracing با پشتیبانی از OpenTelemetry جایگزین شدند

OpenTelemetry جایگزین OpenTracing شده است. API کاملاً مشابه است ، اما نقاط اضافی جمع کننده باید در آینده امکان ارسال آثار از مشتری یا ظرف را فراهم کند.

JAEGER_TRACE env مانند قبل پشتیبانی می شود. گردآورنده OTEL هم از طریق grpc و هم از طریق پروتکل های HTTP پشتیبانی می شود.

این همچنین اولین باری است که ردیابی متقابل از Buildx در دسترس است:

# create jaeger container
$ docker run -d --name jaeger 
  -p 6831: 6831/udp -p 16686: 16686 
  jaegertracing/همه در یک

# ایجاد سازنده با JAEGER_TRACE env
$ docker buildx create 
  -سازنده نام 
  -راننده docker-container 
  --driver-opt network = host 
  --driver-opt env.JAEGER_TRACE = localhost: 6831 
  --استفاده کنید

# Jaeger UI را در http: // localhost: 16686/باز کنید و نتایج زیر را مشاهده کنید 

منابع محدود

کاربران اکنون می توانند موازی حل کننده BuildKit را محدود کنند ، پیکربندی Buildkitd اکنون حداکثر موازی سازی را برای محدود کردن موازی سازی حل کننده BuildKit ، که به ویژه برای ماشینهای کم مصرف مفید است.

در اینجا مثالی آورده شده است اگر می خواهید این کار را با GitHub Actions انجام دهید:

ما اکنون نیز اتصالات TCP را به 4 در هر رجیستری با اتصال اضافی محدود می کنیم. برای کشش و فشار لایه استفاده می شود. این محدودیت قادر به مدیریت اتصال TCP در هر میزبان خواهد بود تا از گیر افتادن ساختمان شما هنگام کشیدن تصاویر جلوگیری شود. اتصال اضافی برای درخواستهای فراداده (بازیابی پیکربندی تصویر) برای افزایش زمان ساخت کلی استفاده می شود.

GitHub Actions پشتیبان حافظه پنهان (تجربی)

ما یک پشتیبان ذخیره سازی تجربی جدید GitHub را برای سرعت بخشیدن به ساخت Docker در اقدامات GitHub منتشر کرده ایم .

این یک روش قبلاً ناکارآمد را حل می کند که از cache build با استفاده از اقدامات رسمی/عمل حافظه پنهان همراه با صادر کننده/وارد کننده حافظه پنهان محلی استفاده می کند ، که ناکارآمد است زیرا هر بار نیاز به ذخیره/بارگیری حافظه پنهان است و ردیابی در هر صورت اتفاق نمی افتد blb. وقتی ساختمان از منبع Git منتشر می شود:

 $ docker buildx build git: //github.com/repo: path/to/subapp 

هنگام ساخت از SSH Git UR عامل SSH به طور خودکار ارسال می شود L:

 $ docker buildx build [email protected]: myrepo.git 

پلتفرم های جدید و بروز رسانی QEMU

  • Risc-V (buildkitd، buildctl، buildx، frontends)
  • Windows ARM64 (buildctl، buildx )
  • MacOS ARM64 (buildctl)

همچنین شبیه سازهای QEMU جاسازی شده به v6.0.0 به روز شده و شبیه سازی را برای سیستم عامل های دیگر ارائه می دهد.

-فایل فوق داده برای buildctl و buildx [19659004] جدید -پرچم فایل فراداده برای ساخت و فرمان دستور buildx اضافه شده است که امکان ذخیره فراداده های نتیجه را در قالب JSON ذخیره می کند:

 $ docker buildx build-typeput = docker --metadata -file ./metadata.json. 
 {
  "containerimage.config.digest": "sha256: d8b8b4f781520aeafedb5a88ff50fbb625cfebad87e392794f1e26a724a2f22a"،
  "containerimage.digest": "sha256: 868f04872380274dcf8528222e84dc66702394de80889e51c87a14126ea9ff6a"
} 

Buildctl همچنین به -فایل فوق داده [پرچم19659060] اجازه می دهد تا فراداده ساخت را تولید کند.

Docker buildx image

اکنون می توان به باینری های Buildx از طریق buildx-bin Docker تصویر دسترسی پیدا کرد تا بتوان از آنها استفاده کرد به عنوان مثال buildx داخل یک تصویر Docker در CI شما. در اینجا نحوه استفاده از buildx در داخل Dockerfile آمده است:

 FROM docker
کپی-از = docker/buildx-bin: latest/buildx/usr/libexec/docker/cli-plugins/docker-buildx
نسخه RUN docker buildx 

سایر تغییرات

برای مشاهده لیست کامل تغییرات ، به یادداشت های رسمی انتشار مراجعه کنید: