Trending
  • Java 17 è arrivato
  • Google Cloud Platform via Proxy
  • Microsoft lancia VSCode.Dev
  • The Future of Java: Records, Sealed...
  • Google Cloud Platform
NodeX
Navigate
  • Home
  • Cloud
  • Tools
  • DevOps
Come creare immagini Docker x86 (e altre!) Su un Mac M1

Come creare immagini Docker x86 (e altre!) Su un Mac M1

0
By Admin on Jan 19, 2021 Tools

Sono saltato sul carro della band Apple Silicon non appena ho sentito quanto fossero fantastici e non sono rimasto deluso. Il mio Apple Silicon MacBook Air è ora il mio driver quotidiano che utilizzo per lavoro come ingegnere del software e per progetti personali.

Uso ampiamente Docker nei progetti su cui lavoro, quindi questo ha portato a un problema unico. Quando creo un'immagine Docker sul mio Mac, crea una versione ARM (in particolare arm64). Ciò significa che questa immagine non può essere eseguita su nessun altro dispositivo come un raspberry pi (linux / arm / v7) o un tipico server (linux / amd64) poiché i binari dell'applicazione all'interno non sono compatibili.

Fortunatamente, Docker supporta da un po 'di tempo le build dell'architettura cross CPU attraverso una funzionalità sperimentale chiamata buildx. È un plugin CLI che integra il toolkit Moby BuildKit . Ciò consente di creare un'immagine Docker per una varietà di diverse architetture di CPU e utilizza QEMU sotto il cofano per eseguire l'emulazione.

Come creare un'immagine Docker multi-architettura su Apple Silicon


Questa guida presuppone che tu abbia un Mac dotato di Apple Silicon con macOS Big Sur. È stato scritto con un MacBook Air dotato di Apple M1, quindi i risultati possono variare a seconda dei dispositivi.

Passaggio 1: abilita le funzionalità sperimentali di Docker Desktop

buildx è una funzionalità Docker è attualmente "sperimentale", quindi è necessario abilitare il supporto della funzionalità sperimentale di Docker Desktop.

Per fare ciò, apri Docker Desktop, quindi vai su Preferenze.

Una volta che sei lì, seleziona "Funzionalità sperimentali" e attiva il dispositivo di scorrimento. Fare clic su "Applica e riavvia" per salvare le modifiche e riavviare il demone Docker.

Dopo aver abilitato le funzionalità sperimentali, puoi chiudere le preferenze di Docker Desktop. Nel tuo terminale, apri la cartella che contiene il Dockerfile che desideri creare per più architetture. Eseguire il comando docker buildx ls per elencare le istanze del generatore correnti. Dovresti vedere qualcosa di simile a sotto.

$ docker buildx ls

NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
default * docker
default default running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6

Quindi crea una nuova istanza del builder con il comando docker buildx create --use modo da poter eseguire più build in parallelo. Senza questo passaggio, dovrai utilizzare il Docker predefinito che supporta solo una singola piattaforma per build. Lo vedrai creato se esegui nuovamente il comando docker buildx ls.

$ docker buildx lsNAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
reverent_banach * docker-container
reverent_banach0 unix:///var/run/docker.sock running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6
default docker
default default running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6


Ora puoi usare buildxcome di seguito per avviare una build multi-architettura. Dovrai inviarlo direttamente a un registro (pubblico o privato) con --pushse desideri che Docker gestisca automaticamente il manifest multi-architettura per te. Non dimenticare di taggarlo (l'esempio utilizza il software open source MemberMatters che ho scritto) e aggiungi un elenco di tutte le piattaforme per cui desideri creare. Puoi vedere le piattaforme compatibili dal docker buildx lscomando precedente . Il comando seguente creerà un'immagine per entrambe le piattaforme Apple Silicon Mac (linux/arm64) e x86 standard (linux/amd64).

$ docker buildx build --platform linux/amd64,linux/arm64 --push -t membermatters/membermatters .


La prima volta che esegui una build, dovrai attendere il download dell'immagine Moby BuildKit in modo da vedere qualcosa di simile.

$ docker buildx build --platform linux/amd64,linux/arm64 --push -t membermatters/membermatters .
[+] Building 16.5s (7/43)
=> [internal] booting buildkit 10.4s
=> => pulling image moby/buildkit:buildx-stable-1 8.1s
=> => creating container buildx_buildkit_admiring_shirley0


Una volta terminata la compilazione, verrà automaticamente caricata nel registro configurato. Docker gestirà automaticamente anche l' elenco dei manifest per te. Ciò consente a Docker di combinare le build separate per ciascuna architettura in un unico "manifest". Ciò significa che gli utenti possono eseguire una normale operazione docker pull <image>e il client Docker elaborerà automaticamente l'immagine corretta per la loro architettura della CPU - abbastanza pulito!

Fonte: jaimyn.com.au

Tagged In News Docker Buildx 
Share Twitter Facebook Google+ Pinterest LinkedIn Tumblr Email
comments powered by Disqus
    • Popular
    • Recent
    • Hot
    • Java 17 è arrivato
      Nov 9, 2021 0 Java 17 è arrivato
    • The Future of Java: Records, Sealed Classes and Pattern...
      Nov 24, 2021 0 The Future of Java: Records, Sealed Classes and Pattern...
    • Comandi Kafka
      Jan 16, 2021 0 Comandi Kafka
    • The Future of Java: Records, Sealed Classes and Pattern...
      Nov 24, 2021 0 The Future of Java: Records, Sealed Classes and Pattern...
    • CNCF pubblica l'ultimo radar tecnologico incentrato su...
      Nov 22, 2021 0 CNCF pubblica l'ultimo radar tecnologico incentrato su...
    • Elaborazione degli eventi in tempo reale exactly-once su...
      Nov 15, 2021 0 Elaborazione degli eventi in tempo reale exactly-once su...
    • Come funzionano le Pull Request di GitHub
      Jan 21, 2021 0 Come funzionano le Pull Request di GitHub
    • Google Cloud Platform via Proxy
      Jan 10, 2021 0 Google Cloud Platform via Proxy
    • Comandi Kafka
      Jan 16, 2021 0 Comandi Kafka
  • Latest News

  • Latest Reviews

  • About

    NodeX

    DevOps News

    Parliamo di Cloud computing, Continuous Integration, Continuous Delivery, DevOps, Docker, Kubernetes, Terraform, GitHub e molto altro...

  • Popular Posts

    • Java 17 è arrivato
      Nov 9, 2021 0 Java 17 è arrivato
    • The Future of Java: Records, Sealed Classes and Pattern...
      Nov 24, 2021 0 The Future of Java: Records, Sealed Classes and Pattern...
    • Comandi Kafka
      Jan 16, 2021 0 Comandi Kafka
  • News Stream

    The Future of Java:...
    CNCF pubblica l'ultimo...
    Elaborazione degli eventi...
    Apache Spark porta l'API...
    GCE: Provided scope(s) are...
    Java Novembre 2021
    Java 17 è arrivato
    Microsoft lancia VSCode.Dev
    AWS annuncia la...
    Datadog monitoring per...
    Java - Observability con...
    I moduli in Terraform
Copyright © 2021. Powered by Powerpad CMS Reloaded
  • About
  • Privacy
  • Contact
Home Tools
^ Top