knowledgebase/pages/podman.md
2024-10-21 13:02:51 +02:00

4.4 KiB

  • podman è un gestore di container come #docker che funziona anche in modalità serverless
  • Nel mese di ottobre 2024 ho iniziato a migrare i servizi del mio #homelab su #podman
  • Rimozione di una precedente installazione di #docker preliminare all'installazione di #podman
    • sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
      sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
      
    • Qualora si vogliano rimuovere anche i file e le cartelle relativi alla precedente installazione di #docker
      • sudo rm -rf /var/lib/docker /etc/docker
        sudo rm /etc/apparmor.d/docker
        sudo groupdel docker
        sudo rm -rf /var/run/docker.sock
        sudo rm -rf /var/lib/containerd
        sudo rm -r ~/.docker
        
    • Rimuovere eventuali interfacce di rete bridge create da docker (script creato con l'ausilio del #llm phind )
      • #!/bin/bash
        
        # Check if we're running with root privileges
        if [ "$(id -u)" != "0" ]; then
           echo "This script must be run with sudo"
           exit 1
        fi
        
        # Find all interfaces starting with 'br-' and delete them
        for interface in $(ip link show | grep -oP '^(.*br-\S+)' | cut -d':' -f2- | sed 's/.$//'); do
            ip link delete $interface
        done
        
  • Installazione su un sistema #archlinux id:: 66f12589-34d7-4a14-b226-d59679c70d28
    • Per installare podman su un sistema Arch Linux in modo che funzioni come docker
    • sudo pacman -R docker # uninstall previous docker installation
      sudo pacman -S podman # install podman
      
      podman run -p 8080:80/tcp docker.io/library/httpd # test the installation
      docker ps
      
    • Se si vuole mimare il comportamento di docker con podman
      • sudo pacman -S podman-docker
        sudo pacman -S docker-compose
        systemctl --user enable podman.sock
        systemctl --user start podman.sock
        export DOCKER_HOST=unix:///run/user/$(id -u)/podman/podman.sock
        sudo rm /var/run/docker.sock
        ln -s /run/user/$(id -u)/podman/podman.sock docker.sock
        docker ps # test the aliasing
        
  • Installazione su un sistema #debian
    • Per installare podman su un sistema Debian/Ubuntu in modo che funzioni come docker
      • sudo apt remove
        sudo apt install podman podman-docker
        
  • Migrazione da #docker a #podman
    • Assicurarsi di avere a disposizione i dati all'interno dei volumi docker, eventualmente esportando e reimportando i database
      • Nel caso di #mariadb
        • docker exec -i gogs-db-1 mariadb-dump -ugogs -pgogs gogs > sql/gogs-14_10_2024.sql
          docker exec -i gogs-db-1 mariadb -ugogs -pgogs gogs < sql/gogs-14_10_2024.sql
          
      • Nel caso di #postgres
        • # Esportazione
          docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
          
          # Importazione
           cat sql/mastodon_14_10_2024.sql | docker exec -i mastodon-db-1 psql -U mastodon
          
    • Rimuovere #docker dal sistema
      • sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
        sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
        
    • Per emulare le funzionalità di docker compose
      • ## Installare i pacchetti podman-compose e docker-compose
        ## es: sudo pacman -S podman-docker && sudo pacman -S docker-compose
        
        ## rootful mode
        sudo systemctl enable podman.socket
        sudo systemctl start podman.socket
        
        ## rootless mode
        systemctl --user enable --now podman.socket
        
        wget https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-linux-x86_64
        
        ## rootful mode
        chmod +x ...
        mv docker-compose /usr/bin/
        
      • Per disabilitare il messaggio di avviso di utilizzo di un provider esterno per compose
    • Attenzione per un bug di podman su Ubuntu 24.04 è necessario utilizzare un repository sperimentale (potrebbe non essere più necessario alla data del 16.10.2024)
  • Gestire i container #podman con #systemd
    • Creare la cartella ~./config/systemd
      • mkdir ~/.config/systemd