Docker brengt eerste versie van containerplatform uit voor Apple M1-machines

Het containerplatform Docker werkt nu natively op Apples nieuwe M1-hardware, met zijn Arm-architectuur. De software moest herschreven worden voor dat platform; het was Dockers 'meest verzochte nieuwe feature ooit'.

Docker werkte al op Apple M1-hardware met behulp van Rosetta, de compatibiliteitslaag in macOS die vertaalt tussen verschillende instructiesets. Dat vertalen kost echter extra rekenkracht, waardoor het niet een geschikte permanente oplossing is. Daarom werkte het Docker-bedrijf aan een native versie van Docker, die na meerdere release candidates nu een general availability-release krijgt. Dat schrijft het in een blogpost.

DockerDocker werkt nog niet foutloos op M1-hardware. Rosetta 2 is nog steeds vereist omdat sommige binaries nog niet omgezet zijn van de Darwin/AMD64-instructieset waar ze vandaan komen. Daarnaast moeten de makers van Docker containers zelf ook compatibiliteit voor Arm64 bieden, wat nog niet altijd het geval is. Een prominent voorbeeld daarvan is mysql; dat werkt nog niet zonder toch amd64 te emuleren. Docker stelt mariadb als tussentijds alternatief voor.

De makers verwachten dat in de toekomst de tekortkomingen van Docker zelf en de containers weggewerkt worden. Dat en meer aantekeningen staan in de release notes.

Docker is een soort virtualisatieprogramma, maar dan met een minimalistische aanpak. Een Docker-image is een bundel van een applicatie en alle nodige libraries en dependencies, maar niet een besturingssysteem daaromheen. Het resultaat is daardoor onder andere minder intensief gebruik van schijfruimte en rekenkracht. Docker is beschikbaar voor Linux, Windows en macOS.

Door Mark Hendrikman

Redacteur

17-04-2021 • 10:40

108

Reacties (108)

108
107
54
14
0
45
Wijzig sortering
De nieuwe M1s klinken echt super maar als developer ben ik nog wel een beetje huiverig om er naar over te stappen om dit soort redenen. Mensen al ervaring met volledig switchen naar een M1 machine voor development?
Ik wilde roepen dat je voor jvm development of gebruik van jetbrains IDE's nog niet kan overstappen. Maar ik zie dat azul systems een arm build heeft van de OpenJDK. Ik heb geen M1 apple om het te testen helaas.

En ik zat dit nu net : https://www.ithinkdiff.co...ea-native-m1-mac-version/

edit: daarnaast zou ik de 64GB geheugen in m'n huidige macbook pro missen

[Reactie gewijzigd door Anoniem: 162126 op 26 juli 2024 21:22]

Anoniem: 162126 @edwinjm17 april 2021 13:16
Check, maar echt 'native' is Intellij zelf niet. Het is de JVM die inmiddels beschikbaar is voor de M1, of eigenlijk voor macos op het arm64 platform. Die jvm leveren ze gewoon mee met de intellij download.
IntelliJ zelf is vooral in java en/of kotlin geschreven.
Als ik die redenatie doorzet is Intellj ook niet "native"op x64. In alle gevallen is er sprake van een VM die al dan niet native werkt op de onderliggende hardware en software die in Java of Kotlin is geschreven.
Dat gaat op voor Java en kotlin/jvm. Kotlin is niet jvm only het draait op jvm, js en native voor Linux, Windows en het gehele Apple platform dus Mac OS maar ook iPadOS/iOS en Apple TV enz enz ;)
Ze zouden Intellij inderdaad eens moeten ombouwen naar C++ ofzo. Ik gebruik hun software dagelijks hoor, maar merk altijd meteen dat het een logge Java applicatie is.
Waarschijnlijk werken JetBrains IDE’s gewoon via Rosetta-emulatie.
JetBrains producten gebruiken de JetBrains Runtime, een eigen fork van OpenJDK en sinds eind januari hebben ze die runtime omgeschreven voor Apple Silicon omdat ze de performance via Rosetta 2 onvoldoende vonden.
JetBrains heeft de meeste, al dan niet alle IDE's al native gemaakt, dus dat maakt geen gebruik van Rosetta
Bij mij draait Web/Phpstorms aardig goed, behalve dat het twee maal per dag permanent vast loopt en ik ze moet force quitten
Native tussen haakjes, aangezien de Jetbrains IDE's op een jvm draaien.
JVM is toch al native beschikbaar voor M1 silicon?

En idd. Azul heeft sinds januari een apple M1 build. Als ze die dus gebruiken is er niks aan de hand.

https://code2care.org/q/i...e-on-apple-silicon-m1-mac

De niet native varianten van Jetbrains IDE’s schijnen nogal “poep” te draaien dus ik gok dat ze wel de native jre gebruiken.

edit: Jetbrains gebruikt zijn eigen Fork van OpenJDK genaamd Jetbrains Runtime (JBR) en die ondersteund inderdaad Apple M1 Silicon: https://youtrack.jetbrain...059-1770513540.1618664059

Zijn ze dus al een paar maanden mee aan het werk en worden ook nu nog constant issues en bugs gefixed.

[Reactie gewijzigd door supersnathan94 op 26 juli 2024 21:22]

Het ‘werkt’ een soort van. Ik zit nog steeds met smart te wachten op native support voor JetBrains Rider, het draait echt ontiegelijk langzaam op de M1, dus dat kan ik helaas niet aanraden. :'(
Heb je ook ervaringen met visual studio op de M1?
Zeker! Het werkt naar mijn idee gewoon prima. Inladen van solutions gaat rap, builden gaat ook rap. Alleen als je werkt met Android emulators dan is het niet aan te raden. Idem met SQL servers als je die lokaal zou moeten hosten voor bijvoorbeeld test-doeleinden. Ik kan gewoon prima werken met de M1 als het gaat om mijn workflow. :)

[Reactie gewijzigd door LiquoriceTwist op 26 juli 2024 21:22]

Ach, android emulators laten mijn i9 macbook ook flink koken
Idem met SQL servers als je die lokaal zou moeten hosten voor bijvoorbeeld test-doeleinden
Juist hier is Docker een goede oplossing voor ;)
Tot nu toe zijn de M1’s alleen instap modellen. De verwachting is dat deze dinsdag op het Apple event nieuwe pro varianten worden aangekondigd met flink veel meer RAM en meer cores etc.
Nou, dat is nu echt nog niet de verwachting hoor. Dinsdag zal naar verwachting vooral gaan over de iPad Pro en misschien instapmodel iMac.

MacBook Pro 14 en 16 inch worden pas in de herfst verwacht. Een tijdje geleden gingen analisten nog uit van een vroegere introductie, maar helaas heeft Apple ook last van de productie tekorten van chips bij hun leverancier (TSMC).
Op de download pagina van jetbrain ide's staat ook een "Apple silicon" versie: https://www.jetbrains.com/idea/download/other.html

Edit: ah, je had het al gezien :Y)

[Reactie gewijzigd door Jur_ op 26 juli 2024 21:22]

Dat is echt falikant onjuist. Ik heb in Nov een M1 Air gekocht en draai daar ook al sindsdien gewoon IntelliJ op. Ik denk dat je Rosetta over 't hoofd gezien hebt.
Ik geef les momenteen met de Mac M1 in de klas. In mijn lessen gebruik ik IDEA en OpenJDK gewoon hoor. Ik blijf erbij dat met een conventionele soc het sneller draait zoals op mijn lenovo, maar het gat wordt steeds kleiner dus al met al ben ik happy.

Wat ik wel mis zijn bepaalde distro's in Linux. Ubuntu ARM heeft niet alles wat ik wil en had graag Pop!OS willen installeren maar dat zit er niet in tot Parallels het mogelijk maakt om Rosetta te gebruiken voor x86 systemen.
Het is nooit verstandig om eerste generatie apparaten te hebben als je die professioneel gebruikt en je knaken er mee verdiend.

Wacht geduldig een jaartje en alle onvolkomenheden zullen er uit zijn gewerkt. Je kan dan ook nog eens een krachtigere chip in je MacBook krijgen ;)
Het is nooit verstandig om eerste generatie apparaten te hebben als je die professioneel gebruikt en je knaken er mee verdiend.
Aan de andere kant, als niemand 'early adopter' wilt zijn en 'een keer begint', zul je nooit kúnnen overstappen. ;)

[Reactie gewijzigd door CH4OS op 26 juli 2024 21:22]

Dat maakt het toch nog steeds niet verstandig om over te stappen als je je inkomsten daarvan krijgt?
Je hoeft ook niet over te stappen, maar neemt de M1 machine erbij. Dan is het een keus om zoveel mogelijk op de oude of de nieuwe machine te doen en op de andere compatibiliteitstesten uit te voeren. Zo heb ik zelf een ARM machine met Linux en daarnaast nog veel x86 machines met Linux en andere besturingssystemen, waaronder FreeBSD, OpenBSD, Haiku en ook Windows (fysiek en virtueel).
Wat voor ARM machine heb je, als ik vragen mag?
Ik heb een Orange Pi Win Plus (en een Nvidia Jetson Nano). De prestaties zijn niet geweldig, maar als het op ARM64 compatibiliteit aankomt, werkt vrijwel alles. Ik wilde in 2017 gewoon een machine om mee te ontwikkelen naast QEMU op mijn laptop.

Ik wacht op krachtigere hardware zoals Quartz64, zodat ik mijn Orange Pi voor andere doeleinden kan gaan gebruiken. Het besturingssysteem draai ik op een SSD, omdat een microSD-kaart wel erg traag is.

Als je weinig geduld hebt en iets veel krachtigers wilt, zou ik aanraden om voor een M1 machine of een Honeycomb LX2K te gaan.
Anoniem: 390704 @psychicist18 april 2021 07:40
Wat ontwikkel jij dan waarvoor je een ARM64 nodig hebt?
Voornamelijk vrije en open source software (FOSS). Ik zorg ervoor dat alles op meerdere architecturen werkt. Dus dan is het handig om voor iedere architectuur ook hardware te hebben en dat hoeft niet allemaal per se even krachtig te zijn.

Voor het zwaardere werk zit ik nog steeds op x86_64 laptops, maar hopelijk komt daar nu eindelijk verandering in en komen er ook laptops met ARM64 chips. In de laatste GTC keynote had Jensen Huang het over laptops met Mediatek CPU's en Nvidia GPU's. Samsung komt ook met een ARM chip met AMD graphics, als het goed is.
Anoniem: 390704 @psychicist18 april 2021 11:35
Maar programmeer je dan in een low-level taal, zoals C of C++? Want andere talen (Python, Java) dekken toch de processor architectuur af? Ik programmeer open source in python, en dat draait altijd automatisch vlekkeloos op x86 en ARM.
Ik programmeer ook wel in hogere programmeertalen, maar ik kan ook op low level programmeren in assembly (x86, ARM, POWER en RISC-V) en hogere programmeertalen die dichtbij de machine staan zoals C en C++.

Mijn kennis van oudere architecturen zoals MIPS, SPARC en M68000 zou ik moeten bijwerken, maar die zijn tegenwoordig iets minder belangrijk.
Anoniem: 162126 @psychicist17 april 2021 13:17
Ik ben al van mening dat mijn huidige macbook pro te duur is. Ik denk niet dat ik heel snel nog een M1 er bij ga nemen :+
Ik zag dat de Mac Mini M1 relatief betaalbaar was (700+ euro). Maar de uitvoering met 1TB SSD is al dubbel zo duur en de uitvoering die ik wil (1 TB SSD en 16GB geheugen) bestaat niet.
Anoniem: 162126 @Ablaze19 april 2021 07:48
Huh? Je kan gewoon 16GB met 1TB selecteren? Dan kom je op € 1489,10 uit.
https://imgur.com/gallery/XMKBk6B

edit:ik begin wel met de duurdere variant

[Reactie gewijzigd door Anoniem: 162126 op 26 juli 2024 21:22]

O ja inderdaad, nu is het zo te zien wel een optie. Ik had het een paar maanden geleden bekeken.
Ik begrijp alleen nog niet zo goed waarom een grotere SSD en 16 GB geheugen de prijs doen verdubbelen.
Anoniem: 162126 @Ablaze19 april 2021 16:18
Ja Apple en prijzen. Ze zijn niet goedkoop, ik zie nu dat een vergelijkbare XPS 15 mij ongeveer € 500 zou besparen. En dat is het geniale van ze, want voor € 500 geef ik macos niet op :/
Consumenten moeten de early adopters zijn. Als professional is het zeer onverstandig.
Nou nee, professionals moeten rekening houden met hun consumenten, dat potentieel hun klanten zijn. Maar nu wordt het heel erg een kip of ei verhaal. Point being; je moet ergens beginnen anders komt het nooit van de grond. Als je een applicatie voor consumenten ontwikkeld kun je niet op hun wachten natuurlijk tot zij eerst over zijn. Zij verwachten dan dat jouw applicatie dan 'gewoon' werkt. Als je dan nog voor support/compatibiliteit aan de slag moet, ben je gewoon te laat en sta je met 1-0 achter en loop je als 'professional' achter de feiten aan.

Als professional moet je dus innoveren en investeren, wil je serieus overkomen. Wachten tot het goed werkt kan heel lang duren en dan is het gewoon slordig als klanten jou voor zijn. Overstappen doe je dan dus als professional niet door van de een op de ander over te stappen zoals een consument dat doet, maar door overbrugging; twee devices dus ipv 1, tot er een punt komt dat je de stekker uit het oude kan trekken.

[Reactie gewijzigd door CH4OS op 26 juli 2024 21:22]

Dat ligt er in deze specifieke context net aan wat je doet. Stel jij bent een grafisch vormgever, en je pc is ‘slechts’ je gereedschap, dan zou ik het zeker even aankijken. Als je een softwareontwikkelaar bent zou ik hem er zeker direct naast zetten om de door jou genoemde redenen.
Anoniem: 1578568 @mikesmit17 april 2021 11:34
en als je het geld hebt koop je juist de eerste versie van iets, om er een paar uur per week mee te klooien en eventueel al je product/dienst compatible te maken zodat je vooraan de rij staat in een nieuwe markt. ;)
Of je gaat er gewoon voor en hebt vertrouwen in de maker! Ik heb nooit een seconde spijt gehad van de aanschaf. Uiteraard kan je wel ergens tegen aanlopen maar met Rosetta 2 werkt alles vlekkeloos. Het is een nieuwe stap van Apple maar ze hebben natuurlijk ervaringen genoeg met iPhones en iPads ook met hun eigen processors. En wachten op een upgrade.. tsja het gaat altijd beter en sneller worden in de toekomst.
Dit dus ! Ik zit zelf ook te wachten op de gen2 chips om mijn XPS 13 te vervangen door een macbook air of macbook pro met nieuwe m1x of m2 chip !
Ik werk nu al even op een Air M1. Komende vanaf een 15” Pro met i9 is het echt een verademing. Hij voelt sowieso al een stuk sneller, en daar bovenop is er geen hitte dus geen throttling. Voor de helft van de prijs!

Bijna alle development software die ik nodig heb is inmiddels native beschikbaar, op Android Studio na. Maar ook dat voelt eigenlijk net zo snel (traag) aan als op de i9. Af en toe ben ik tegen een M1 specifiek bugje aangelopen, maar meestal is er tegen die tijd ook al een update beschikbaar die het oplost.
Mis je de optie voor meet schermen niet?
Hangt er van af wat je exact doet als developer natuurlijk. Doe je bijvoorbeeld aan webdev en heb je enkel maar je IDE nodig, dan maakt het niet zozeer uit op welk platform je bezig bent. Schrijf je applicaties dan kan een M1 net handig zijn omdat je zowel je code kan testen voor de oude architectuur dankzij Rosetta als voor de nieuwe architectuur.
Ik werk zelf veel met .NET, ASP, Xamarin en SQL. Het is redelijk veel houtje-touwtje om het allemaal een beetje werkend te krijgen op de M1. Visual Studio voor Mac is nog niet native (dit komt pas in november met .NET 6), m’n Android emulators werken ook nog niet en ik had een tijdje terug issues met ASP dat m’n dotnet bleef crashen als ik ging debuggen. Dit is wel opgelost met een update voor MacOS! Ook kan je niet een lokale SQL database draaien omdat deze draait op een x86 architectuur. Dus je moet een speciale ARM-versie gebruiken hiervoor in combinatie met Docker.

Moet wel zeggen dat ik onder de indruk ben van de prestaties! Het draait allemaal wel soepel nadat je wat hebt zitten aanklooien om het werkend te krijgen. Maar het gaat niet zo soepel als op een Intel machine. Ben er nog steeds erg over te spreken tot nu toe! :)
Ik gebruik een M1 MacBook Pro voor mijn werkzaamheden aan native iOS development in Xcode, alsook Xamarin met Visual Studio for Mac. Dat gaat beide prima. Zeker Xcode loopt wel lekker. VS tot Mac crashed zo nu en dan bij het wisselen van git branches, maar is zo weer terug opgestart. Ook Xcode kent zijn kuren en heb ik vaker gecrashed gekregen op een M1 dan op een Intel, maar dat gebeurt niet zo gek vaak. Xcode heeft wel meer bugs die er altijd al inzaten.
Alles wat ik nodig heb werkt. Jetbrains Rider is donders traag en Unity erger ik me ook weleens aan maar het is bruikbaar. Xcode is dan weer extreem snel. Vooral kunnen testen op de Mac zelf is een zegen voor iOS development.
Test builds maken duurt seconden in plaats van minuten.

Voor de rest qua dagelijks gebruik is het een top laptop. Alleen voor development kan je misschien beter wachten op de tweede iteratie.

[Reactie gewijzigd door Wolfos op 26 juli 2024 21:22]

Behalve dat ik een paar bugs tegenkomen af en toe, werkt de M1 fantastisch voor mijn hobby projecten. Langzaam worden er steeds meer producten native ondersteunt. Het gaat sneller dan ik dacht. Ik zou nog een generatie wachten als je de macbook als hoofdmachine wilt gebruken. Maar valt me niet tegen in ieder geval.
Ja hoor, draai ook al arm machines in AWS als proof of concept. Baseline in de cloud kan je zien als 20% goedkoper EN 20% sneller. Het is afhankelijk in welke, en met welke stack je werkt. Ik zit vooral in de OSS cloud-native meuk en voor vele dingen is er dan ARM compatibiliteit.
Ik gebruik een M1 voor development. Hier een daar moet je soms iets extra's downloaden voor een applicatie, maar ik heb eigenlijk nergens last van. Ik draai zelfs mysql zonder problemen, wat volgens de meeste artikels niet eens goed zou moeten kunnen?

Ik ben erg tevreden en de accuduur is echt ongekend. Maar als je super specifieke eisen hebt zou ik het risico misschien niet nemen. Ik develop zelf Vue.js, Node.js, Flutter (iOS en Android) + docker. Het enige wat ik zou kunnen zeggen dat een "probleem" was, zijn de Android emulators. Die zijn er namelijk nog niet voor M1. Google heeft tijdelijk één uitgebracht die volgensmij draait met rosetta en is best oud, maar verder draaien alle Flutter apps hier wel op.
Ik heb de switch gemaakt maar niet altijd is dat succesvol gebleken.
De meeste applicaties werken al native of via rosetta zonder problemen. Echter is Docker en de stack die je zelf daar in draait niet altijd klaar voor arm architectuur. Het voorbeeld van mysql wordt genoemd. In mariadb is niet alles vlekkeloos hetzelfde en zijn er toch problemen. Zo zijn er nog wel meer zaken die voor genoeg hoofdpijn zorgen met een M1.

Dat ARM goed werkt en dat apple mooie chips maakt is duidelijk, maar niet alle software is al ready genoeg.
Vorige week 1 gekocht, omdat er een nieuwe accu in mijn Macbook Pro Touchbar van 2017 moet en dat blijkbaar 2 weken gaat duren. Kan niet zonder mijn Mac (heb nog wel Windows voor gaming en een Windows machine van een klant, plus Proxmox machine (met van alles), maar mijn primaire desktop is mijn Mac. Dus ik dacht laat ik dit eens proberen en heb een 16GB/512GB M1 mini gekocht .

Ik denk dat ik geluk gehad heb met de timing, want zo goed als al mijn tools zijn compiled voor Apple Silicon. Ik ben geen full-time developer, maar schrijf wat programmatjes in Python, werkt veel met kubernetes, gebruik veel *nix stuff, heb wat IOS-apps geschreven etc. en dit ging eigenlijk super. Tegenwoordig gebruik ik voornamelijk Visual Studio Code (ik heb ook Sublime, maar voornamelijk VSC), Docker Desktop, Minikube, Homebrew, etc. Tot nu geen geen issues.

Het enige wat ik mis is de fingerprint scanner en af toe het touchpad. Ik ben nooit fan geweest van de Touchbar. Nu is het probleem wel dat de bedoeling was dat deze Mini naar mijn vrouw ging, en haar Intel mini naar mijn jongste dochter, maar dit ding is super snel. Veel sneller dan mijn Macbook Pro van 2017. Ik zie het eigenlijk niet zo zitten om weer terug te gaan :| . Portabiliteit heb ik tegenwoordig niet nodig dankzij Covid en 100% thuiswerken. Luxe problemen zeg maar.
Vanaf December overgestapt op een M1 voor development, geen issues, alles werkt, docker had ook een RC voor de M1 modellen.

PHP, .net core, python, Ruby on Rails etc werken prima op de M1. Geen issues hier :)
Android Studio en .net core is dan tevens nog niet native ARM64, en dat merk je aan de performance maar het is werkbaar en ze zijn er mee bezig.

Ik vind tot nu toe de voordelen hoger opwegen dan de nadelen.
Hangt ervan af wat je doet. Om te testen heb je nog altijd een mac nodig. Maar als je windows software maakt heb je ook nog een windows nodig, dus parallels zal je altijd nodig hebben om te tetsen. En het bedrijf waarvoor je werkt moet hier ook nog mee ok zijn.
Windows software maken op een Mac is dan natuurlijk wel ironisch, ik hoop dat je dat zelf ook wel inziet.
Bovendien goedkoper in hardware ook als je direct en native dat allemaal in Windows zélf doet. ;)
Ja ik weet het, maar ik heb toch al zo een paar helden gezien. Willen perse een mac, maar dan visual studio onder windows onder parallels .. omdat ze c# gebruiken

[Reactie gewijzigd door cricque op 26 juli 2024 21:22]

Zou eerder VMWare Fusion gebruiken. Stabieler, beter en gunstiger licentiemodel.
ja; https://blog.workingweb.n...nt-on-the-macbook-air-m1/
Het ligt er wel heel erg aan wat je er mee wilt, niet native docker images zijn wat trager, bij mijn mysql vind ik het wel handig omdat ik dan niet te verwend ben en denk dat het met veel load op mijn server ook zo goed werkt ;-)
Het lijkt mij dat als je een serieuze developer bent, je zo snel mogelijk zo'n nieuw platform in huis wilt hebben. Je producten moeten gereed zijn als de markt een grote vlucht neemt. En als je je geen M1 Macbook kunt veroorloven ben je geen serieuze developer, maar een hobbyist.
En als je je geen M1 Macbook kunt veroorloven ben je geen serieuze developer, maar een hobbyist.
Rare stelling, dat het zijn van een serieuze developer gepaard gaat met financiën.
Macbook is echt een slechte investering.

Alles verplaats naar webapps, waarom zou je een Macbook kopen om webapps te ontwikkelen. De server is doorgaans geen macbook.

[Reactie gewijzigd door 12345j op 26 juli 2024 21:22]

Over dat laatste punt. Juist dáárom je gebruik je dus Docker.
Ik heb zowel een M1 als Intel machine, en ik ben met web en game development nog niet tegen issues aangelopen.
Als software ontwikkelaar zou je niet bang moeten zijn voor andere hardware. Het operating systeem zou je moeten 'afschermen' of aan de andere kant, moeten helpen bij het aansturen.

Eerlijk is eerlijk, ik ben al een tijdje uit de software ontwikkeling maar als ik zie hoe software, zeker in de linux wereld maar ook in andere unix-afgeleiden, best wel makkelijk naar een ander platform gaat, zie ik voor de nieuwe apple hardware geen enkel probleem.

Voor docker verbaast het mij dat het nu zo'n groot nieuwsbericht is. Ik had niet anders verwacht. Voor compilers, build-omgevingen en dergelijke gaan we er ook van uit dat het mee komt. Containers, docker en dergelijke tools zorgen binnen het os vooral voor afscherming. Dat zal steeds meer 'native' beschikbaar komen in steeds meer operating systemenen. En bij de migratie van operating systemen naar andere platformen, zullen deze zaken ook mee komen als ze er al in zitten.
Afhankelijk welke software je gebruikt en waarvoor je programmeert kan het volgens mij wel al, maar je verricht best op voorhand nog wat opzoekwerk.
Ik volg momenteel een opleiding programmeren waarin de focus voornamelijk ligt op MVC webapplicaties.
Op dit moment heb ik voor zo goed als elk vak dat ik dit semester volg een Windows machine nodig. Mijn M1 macbook air draait sommige projecten vlekkeloos, anderen draaien niet.
Op Windows gebruik ik Visual Studio 2019, op MacOS Jetbrains Rider.

Het zal nog even duren vooraleer dit allemaal soepel draait op MacOS.
Ik heb er echter wel goede hoop in, aangezien .NET 6 aangekondigd is voor een release in November van dit jaar. Vooraleer dit dan effectief de standaard wordt, zitten we alweer een stukje verder :)
Support
.NET 6 will be released in November 2021 and will be supported for three years, as a Long Term Support (LTS) release. The platform matrix has been significantly expanded compared to .NET 5.

The additions are:

Android.
iOS.
Mac and Mac Catalyst, for x64 and Apple Silicon (AKA “M1”).
Windows Arm64 (specifically Windows Desktop).
Bron: https://devblogs.microsof...nouncing-net-6-preview-2/

Voor alledaagse taken is de M1 Macbook Air een plezier om te gebruiken. Maar zoals hier al vaak aangeraden werd: Als je er je boterham mee moet verdienen, zoek dan zeker uit dat het alles soepel draait hetgeen je nodig hebt. Anders kan je hem evengoed dichtklappen en er je oud brood mee smeren :+
Dus het werkt natively maar niet native. Ik snap het verschil maar het is toch een beetje verwarrend.
Docker is een soort virtualisatieprogramma
Nope, docker is geen virtualisatie, ook niet een soort virtualisatie.
Hier zit het verschil tussen Docker Destkop en Docker Engine. De eerste is een virtualisatie programma voor Mac en Windows zodat gebruikers van deze platformen toch Docker kunnen gebruiken, het tweede is een container-systeem wat gebruik maakt van allemaal onderliggende Linux systemen.

Om maar even aan te geven hoe groot het verschil is tussen Docker op een Mac en Docker op Linux... op Linux wordt het ook wel Moby Engine genoemd, omdat Moby Engine het vendor-neutrale project is wat er aan ten grondslag ligt. In het verleden heb ik zelfs een artikel geschreven over het gebruik van Moby Engine i.p.v. Docker:

https://fedoramagazine.org/docker-and-fedora-32/
Vandaar ook dat het logo van Docker een walvis is. Gekozen naar Moby Dick.

Via docker desktop word er idd ook een virtuele machine geïnstalleerd om de hele boel te draaien.
Docker maakt gebruik van VTd en VTx (of vergelijkbaren voor AMD), de containers zijn over het algemeen gebouwd op een bepaalde (Linux) distro, je kunt in de container (mits aanwezig) gebruik maken van de eigen bash of sh, het is dus wel degelijk virtualisatie, alleen niet in de traditionele betekenis. On top of it; je kunt ook bepaalde hardware 'doorgeven' aan de container, bijvoorbeeld een GPU voor hardware encoding of andere acceleratie.

Containerization is dus wel degelijk een 'soort van' / vorm van virtualisatie.

[Reactie gewijzigd door CH4OS op 26 juli 2024 21:22]

Volgens mij gaat het hier vooral om de grenzen van de definities van de gebruikte termen en de gebruikte technieken.

Als het gaat om virtualisatie, dan is het maar net wat je virtualiseerd: Virtualiseer je de hardware of virtualiseer je het operating systeem. Als je bijvoorbeeld het printen wilt virtualiseren, dan print je naar pdf. Als je een typemachine wil virtualiseren, gebruik je een tekstverwerken.

Het gebruik van VTd en/of VTx of wat dan ook maakt het niet meteen virtualisatie. Andersom: vmware-workstation doet het vanaf verzie 0.x al zonder VTd, VTx of andere hardware ondersteuning.

Wat containers en docker betreft: Dat virtualiseerd het operating systeem: In zo'n container kan je in de regel alleen maar draaien wat je op dat zelfde operating systeem zonder docker kan draaien. Een linux applicatie kan op een msWindows docker/container niet zomaar draaien.
Docker is virtualisatie op OS-niveau, dus het is wel degelijk virtualisatie. Sterker nog, onder Windows en macOS gebruikt docker virtual machines om containers te draaien.
Ik dacht dat MacOS zelf native containers had in de vorm van Jails. Is dat niet uberhaupt waar containers begonnen zijn? Waarom gebruikt Docker dat niet? Of bestaat Jails niet in de vorm die ik denk op MacOS?

edit: dit komt van FreeBSD, MacOS heeft het blijkbaar nooit ondersteund.

[Reactie gewijzigd door ApexAlpha op 26 juli 2024 21:22]

Jails zijn ook geen virtualisatie. Jails lijken meer op containers dan op virtual machines eigenlijk.
Hoe het op Windows werkt weet ik niet maar wie draait er dan ook Docker op Windows. Ik moet de eerste nog tegenkomen. Mac weet ik helemaal niks van maar op Linux is het gewoon een container en geen VM.
Onder Windows en macOS wordt er een Linux VM gebruikt, dus waarschijnlijk is een Docker-container een container binnen die Linux-VM.
maar wie draait er dan ook Docker op Windows
Ik zelf niet maar genoeg mensen als ik het zo allemaal lees op internet.
Al die mensen willen gewoon docker proberen of gebruiken voor dev/test. En veel developers gebruiken macs en windows machines. Ik vind het fijn dat ze iedereen gewoon de keuze geven.
Ik gebruik docker op Windows.
Van mijn werk moet ik verplicht op mijn Windows laptop ontwikkelen. Docker is hier juist een perfect hulp bij, want onze deployment omgeving is Linux.
Goed, ik wil ook 100% op Linux werken, maar de bedrijven waar ik terechtkomen hebben zelden (lees: nooit) een passende policy. Windows/Mac only, vaak als excuus ISO blabla. Met WSL2 is het overigens wel een stuk dragelijker geworden.
Het is tegenwoordig redelijk standaard voor ontwikkelaars om containers op windows/mac te ontwikkelen om ze uiteindelijk op linux te draaien (tegenwoordig veelal Kubernetes)
Er zijn ook een hele hoop mensen die WSL gebruiken (waaronder ik).

Technisch gezien installeer je docker in Windows en die maakt zichzelf beschikbaar binnen Linux.
De definitie is dat containers gewoon OS-level virtualisatie zijn. Virtualisatie is niet hetzelfde als virtual machines waar jij de vergelijking mee maakt in je laatste zin.
Lol. Zowat al mijn collega’s draaien docker onder windows. Op een paar enkelingen na die linux draaien, maar die hebben nu weer problemen/missen features van allerlei colaboration software zoals starleaf en slack.

Op linux is het een containerisatieplatform doordat het daar alleen docker engine hoeft te draaien. Onder windows en mac draait het dat in een VM onder water.

Hoewel ik me wel afvraag hoe het werkt als je WSL gebruikt. Want dan kan ik me voorstellen dat je daarin dus docker engine draait en dan vanuit windows alleen met de client er naartoe babbelt.
Ik draai zelf Windows als OS maar docker op Windows is zooo ontzettend traag vergeleken met Linux.
WSL2 ook geprobeerd, praktisch net zo traag.
Draai nu in VMWare een Ubuntu VM waar ik mijn Docker images in draai en dat draait echt prima. Ook integratie met m’n software zoals PHPStorm (draait gewoon op Windows) is prima.
Heel mooi om te zien dat er wel degelijk veel windows gebruikers zijn die docker gebruiken en dat traag vinden en/of beseffen dat ze ergens een linux omgeving draaien. En als ik ff snel wat rond zoek op internet blijkt dat er al heel snel een linux nodig is, wsl of hyper-v gebaseerd.

Daarmee vraag ik mij af of er ook msWIndows applicaites en/of services zijn die in een msWindows docker kunnen draaien. Zoals apache onder linux in een container draait, kan iis in een container? zoals MySQL onder linux in een container kan draaien, kan msSQL onder windows in een container draaien?

Uiteindelijk zie ik nu dat docker en containers vooral in de unix-achtige omgevingen goed werkt. Natuurlijk onder linux maar ook onder MacOS. Dat is niet aan de containers maar volgens mij veel meer aan de beschikbare applicaties en services die binnen zo'n container moet draaien. De msWindows applicaties zijn veel te veel met het OS verweven, zeker de applicaties van microsoft zelf.

[Reactie gewijzigd door beerse op 26 juli 2024 21:22]

Is ‘docker is een soort virtualisatiesoftware’ niet een prima management summary? Dat zou ik wel zeggen als ik naar de reacties kijk.

Wat moet de leek nog meer weten?
Makkelijk dat als je je werk deelt de andere mensen ook meteen alle benodigde tools in de docker hebben zitten en dus niet nog apart van alles moet bij installeren als dat nodig is.
Het is een container, maar er is vrijwel geen overhead net als bij virtualisatie. Dus in principe draait alles in een docker container even snel als direct op de machine.

Daardoor kun je docker bijv ook draaien op een VM. Nested virtualization is een stuk trager (Een VM op een VM draaien).
Het is een container, maar er is vrijwel geen overhead net als bij virtualisatie. Dus in principe draait alles in een docker container even snel als direct op de machine.
Overhead van draaien van Docker in een VM is sowieso nihil. Ik merk nauwelijks verschil met Docker als ik het native zou draaien. Maar als virtualisatie ook geen overhead heeft (zoals je nu wel schrijft) draait een vm natuurlijk ook even snel als native, dus je praat jezelf wel wat tegen.

[Reactie gewijzigd door CH4OS op 26 juli 2024 21:22]

Ja ik bedoel dat virtualisatie juist wel overhead heeft, beetje ongelukkig geschreven. net als had itt moeten zijn.
Het laat je toe om je applicaties in containers te plaatsen zodat ze gescheiden zijn.
Je applicaties doen Linux kernel calls en Docker gaat daar tussen zitten.
Op een Linux OS, is de Linux kernel aanwezig en moet je niet virtualiseren.
Op een niet-Linux OS, moet je dus Linux virtualiseren om een Linux kernel te hebben.
Het grote voordeel daarbij tov VMs is dat je nu slechts 1 instantie van Linux opstart en alle Docker containers gebruiken die instantie, terwijl bij VMs gaat iedere applicatie die je draait zijn eigen VM (applicatie + Linux) draaien. Dat vereist dus wat meer resources.

Hoe het juist op MacOS gaat, weet ik niet, maar voor Windows:
- vroeger kon je een VirtualBox gebruikt om Linux virtueel te draaien
- nu kan je WSL2 gebruiken, maar uiteindelijk start die onder water een Hyper-V Linux VM op.
Mac heeft ook geen Linux kernel van zichzelf, dus die draait ook virtueel mee als je docker installeert.
Dat hangt af van het OS waar je Docker op draait. Docker is een Linux kernel nodig om de containers in te draaien. Op Linux is er geen virtualisatie aanwezig. Op de huidige versie in Windows gaat het via WSL2, m.a.w. via de ingebouwde Linux kernel, hier is dus ook geen virtualisatie meer aanwezig. (Tenzij je een verouderde Windows / WSL versie draait, dan is er wel een Hyper-V VM aanwezig). Op de Mac is er geen Linux kernel, daar wordt via Docker's HyperKit een lightweight VM voor gebruikt. Met Docker For Mac wordt er dus wel gebruik gemaakt van virtualisatie.
Ha, met WSL is het juist omgekeerd; WSL2 is wel weer een virtual machine, omdat de WSL1 engine (de versie zonder VM, die direct in de Windows-kernel draaide) niet de mogelijkheden kon bieden die Microsoft nodig had, vooral op kernel-interfacegebied. Het is dan wel weer een speciale virtual machine die veel beter integreert dan andere virtual machines die je op Windows draait, op de Sandbox-VM's na, misschien.

Op beide operating systems draai je dus een virtual machine, maar op Windows is de hypervisor al wat ouder en beter ondersteund dus heb je betere support.

Ook speelt de switch naar ARM hier, omdat veel containers nog voor amd64 worden gebouwd. Virtualisatie en Rosetta 2 zijn expliciet niet compatible met elkaar volgens de documentatie, dus amd64-containers zouden moeten draaien met een stuk vertaalsoftware als qemu.
Leuk weetje: Hyper-V is een type 1 hypervisor. Simpel gezegd is het dan je operating system. Een systeem zoals VMWare Workstation en Virtualbox is een type 2 hypervisor, die bovenop je OS draait.

Omdat Hyper-V een type 1 hypervisor is, draait je Windows installatie dus ook bovenop Hyper-V. Dat is dus eigenlijk ook een virtuele machine binnen de hypervisor.

Is WSL-2 dan net zo virtueel als je Windows installatie zelf? Leuke vraag om eens uit te zoeken.

(Je Windows installatie is wel een speciaal type VM die veel bredere toegang heeft tot hardware etc.)

[Reactie gewijzigd door xFeverr op 26 juli 2024 21:22]

Maar start WSL2 niet altijd een VM op?
WSL1 was toch een vertaallaag van Linux naar Windows calls en WSL2 is een geïntegreerde Linux op Windows. Vandaar dat je ook nog Ubuntu of een andere Linux distro moet downloaden na activeren van WSL2.
https://docs.microsoft.co...dows/wsl/compare-versions
Ja, WSL2 gebruikt ook een vorm van virtualisatie, maar met een lagere isolatie. Geheugen en processor worden gewoon gedeeld. Ook is er een geintje uitgehaald met de linux kernel waardoor hij bloedsnel start. De nadelen van virtualisatie zijn hierdoor een stuk minder merkbaar.
Kan zijn, maar eerlijk gezegd merk ik daar niet zo veel van tov de oude Docker met VirtualBox.
Ik heb ook een VirtualBox Linux VM gemaakt, met daarin dan Docker en dat werkte eigenlijk nog het snelste. Wel omslachtiger met bestanden uitwisselen, dus uiteindelijk heel mijn developer omgeving in de VM geplaatst.
Dat resorce management is dan ook best wel interessant. Docker kan onder windows met wsl geheugen aanspreken als hij dat nodig heeft, op een mac moet je het reserveren en kunnen andere programma’s er geen gebruik van maken. Daarom zou ik voor mn werk graag een 32gb machine gebruiken, want met 16gb is het kiele kiele. Als je docker alleen start ben ik al 8Gb aan reserved memory kwijt omdat ik dat soms ff nodig heb en ik geen zin heb om te wachten op het herstarten van docker als ik het terugzet naar bijvoorbeeld 6 (want dat duurt relatief lang.
Een docker container zelf is misschien geen VM, maar maakt wel gebruik van virtualisatie als je deze deployed.

[Reactie gewijzigd door BeerenburgCola op 26 juli 2024 21:22]

Geen ervaring met native mac development maar met webframeworks is er niks aan het handje. Laatst moest ik nog eens een dagje op mijn 3 jaar oude macbook pro werken... niet te geloven wat een stoomfluit dat ding eigenlijk is, waar de M1 nooit boven de 30% cpu-belasting uitkomt.
En dan moet je nagaan dat web development op een mac al redelijk snel is dankzij linux achtige constructies die wel ondersteund worden (zoals symlinking). Op windows kan een NPM install rustig twee tot drie keer zo lang duren omdat NPM nogal wat dingen anders moet doen.
Interessant artikel op VICE wat hieraan raakt: Open-Source app lets anyone create a virtual army of hackintoshes

[Reactie gewijzigd door laptopleon op 26 juli 2024 21:22]

Op dit item kan niet meer gereageerd worden.