User Tools

Site Tools


cn:ccr:aai:howto:docker:mac

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cn:ccr:aai:howto:docker:mac [2023/11/17 15:34] enrico@infn.itcn:ccr:aai:howto:docker:mac [2023/11/17 15:53] (current) enrico@infn.it
Line 1: Line 1:
 +====== Docker desktop alternative for macOS ======
  
 +Questa è una guida basata sulle indicazioni di [[https://medium.com/team-rockstars-it/how-to-implement-a-docker-desktop-alternative-in-macos-with-podman-bbf728d033da|Rens Verhage]] aggiornate alle versioni disponibili ad oggi (venerdì 17 novembre 2023)
 +
 +Anche se ci sono metodi alternativi, questa breve guida si basa sull'utilizzo del gestore di pacchetti [[https://brew.sh|Homebrew]]
 +
 +===== podman =====
 +
 +Una volta installato podman (versione 4.7.2 alla data odierna) via
 +
 +  $ brew install podman
 +  
 +{{:cn:ccr:aai:howto:docker:screenshot_2023-11-17_at_16.09.22.png?600|}}
 +  
 +è necessario inizializzare una VM Linux nella quale potranno essere eseguiti i container. Per default podman inizializzerebbe una VM con 1CPU e 2GB di RAM e 100GB di disco. Se si hanno a disposizione abbastanza risorse, può essere utile aumentare quelle assegnate alla VM
 +
 +  $ podman machine init --cpus 4 --memory 4096 --disk-size 100
 +  
 +{{:cn:ccr:aai:howto:docker:screenshot_2023-11-17_at_16.15.40.png?600|}}
 +  
 +Questo genera una VM basata su fedora-coreOS-39 che può essere messa in esecuzione via
 +
 +  $ podman machine start
 +
 +{{:cn:ccr:aai:howto:docker:screenshot_2023-11-17_at_16.18.08.png?600|}}
 +  
 +===== docker =====
 +
 +podman sostituisce tutti i comandi docker mantenendone la sintassi. Per chi è abituato ad utilizzare docker, può essere utile definire
 +
 +  $ alias docker='podman'
 +
 +e magari inserirlo nel .bash_profile (o nell'equivalente delle altre shell)
 +
 +  $echo "alias docker='podman'" >> ~/.bash_profile
 +  
 +===== docker-compose =====
 +
 +Siccome docker-compose è una soluzione specifica di Docker e non esiste un equivalente in podman, è necessario installarlo (sempre via Homebrew)
 +
 +  $ brew install docker-compose
 +  
 +{{:cn:ccr:aai:howto:docker:screenshot_2023-11-17_at_16.28.59.png?600|}}
 +
 +e quindi bisogna eseguire
 +<code>
 +mkdir -p ~/.docker/cli-plugins
 +ln -sfn /opt/homebrew/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose
 +</code>
 +
 +===== docker-compose build =====
 +
 +Per poter effettuare il build, docker-compose utilizza l'immagine moby/buildkit:buildx-stable-1 che fa partire nel container buildx_buildkit_default
 +
 +{{:cn:ccr:aai:howto:docker:screenshot_2023-11-17_at_16.49.20.png?600|}}
 +
 +   
 +Tale container esegue il build all'interno della VM per l'architettura corrente e definisce anche la variabile d'ambiente TARGETPLATFORM che può essere utilizzata all'interno del Dockerfile. Ad esempio:
 +<code>
 +RUN if [ "$TARGETPLATFORM" = "linux/arm64" ] || [ "$TARGETPLATFORM" = "linux/aarch64" ]; then  ARCH=aarch64;
 +    elif  [ "$TARGETPLATFORM" = "linux/x86_64" ] || [ "$TARGETPLATFORM" = "" ] || [[ -z "$TARGETPLATFORM" ]] ; then  ARCH=x86_64; \
 +    else echo "Plarform not supported. Exiting"; exit 1 ;\
 +    fi \
 +</code>  
 +
 + 

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki