Outils pour utilisateurs

Outils du site


tutoriaux:docker-related:creer-container-86box

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
tutoriaux:docker-related:creer-container-86box [2024/07/16 20:47] – [le planning] fratertutoriaux:docker-related:creer-container-86box [2024/07/18 15:19] (Version actuelle) frater
Ligne 1: Ligne 1:
-====== 86box - PC vintage dans un docker ======+====== EmulDock-86box - PC vintage ======
  
 Ce n'est un secret pour personne, j'ai toujours aimé les ordinateurs, et je gardes de merveilleux souvenirs de chacun d'eux (SpectraVideo, C64, PC286, Amiga, etc.).   Ce n'est un secret pour personne, j'ai toujours aimé les ordinateurs, et je gardes de merveilleux souvenirs de chacun d'eux (SpectraVideo, C64, PC286, Amiga, etc.).  
Ligne 17: Ligne 17:
 En parlant de packages, la vidéo télécharge des packages directement sans utiliser les packages managers; ce qui me désole également. En parlant de packages, la vidéo télécharge des packages directement sans utiliser les packages managers; ce qui me désole également.
  
-toutes mes images sont disponibles sur mon [[https://hub.docker.com/u/saintfrater|dockerhub]].+Toutes mes images sont disponibles sur mon [[https://hub.docker.com/u/saintfrater|dockerhub]]. 
 + 
 +===== le dockerfile =====
  
 Je vais donc exposer mon ''dockerfile'' bloc par bloc pour y expliquer la logique. Je vais donc exposer mon ''dockerfile'' bloc par bloc pour y expliquer la logique.
Ligne 26: Ligne 28:
  
 Cette image est une customisation que j'ai faites, je publierais sans doute un article plus tard, tant cette customisation est avancée. Cette image est une customisation que j'ai faites, je publierais sans doute un article plus tard, tant cette customisation est avancée.
 +
 <code yaml [enable_line_numbers="true"]> <code yaml [enable_line_numbers="true"]>
 # #
 # 86Box # 86Box
 # #
 +FROM    saintfrater/basic-debian:latest
 +ARG     LOCAL_USER=emulator
  
-FROM saintfrater/basic-debian:latest+# Create non root group & user 
 +RUN     adduser $LOCAL_USER
 </code> </code>
 +
 +Nous allons également executer l'application avec un utilisateur //non-root//.
 +
 +Cet utilisateur est créer en ligne 8.
  
 **Paramétrage du serveur VNC** **Paramétrage du serveur VNC**
 <code yaml [enable_line_numbers="true"]> <code yaml [enable_line_numbers="true"]>
 #User Settings for VNC #User Settings for VNC
-ENV USER=root 
 ENV PASSWORD=password1 ENV PASSWORD=password1
 </code> </code>
 +
 +Ici l'on peut changer le mot de passe "par défaut" du container, il sera possible de changer 'en permanent' en utilisant un volume (voir plus bas).
  
 **Quelques variables d'ajustement** **Quelques variables d'ajustement**
Ligne 59: Ligne 70:
 RUN     mkdir /opt/86box && \ RUN     mkdir /opt/86box && \
         cd /opt/86box && \         cd /opt/86box && \
-        wget https://github.com/86Box/86Box/releases/download/v4.1.1/86Box-Linux-x86_64-b5634.AppImage && \+        wget -nv https://github.com/86Box/86Box/releases/download/v4.1.1/86Box-Linux-x86_64-b5634.AppImage && \
         mv 86Box-Linux-x86_64-b5634.AppImage 86Box.AppImage && \         mv 86Box-Linux-x86_64-b5634.AppImage 86Box.AppImage && \
         chmod +x 86Box.AppImage && \         chmod +x 86Box.AppImage && \
-        ./86Box.AppImage --appimage-extract && \+        ./86Box.AppImage --appimage-extract > null && \
         rm 86Box.AppImage         rm 86Box.AppImage
 </code> </code>
Ligne 68: Ligne 79:
 Nous téléchargeons une version particulière de l'//AppImage// (ligne 4); il serait intéressant d'automatiser la "lecture" de cette version, sans doute pour une prochaine release. Nous téléchargeons une version particulière de l'//AppImage// (ligne 4); il serait intéressant d'automatiser la "lecture" de cette version, sans doute pour une prochaine release.
  
-Cette //AppImage// est rendue exécutable (ligne 6) et exécutée pour forcer l'extraction dans le dossier, on peut ensuite effacer le //AppImage// (ligne 8) car il n'a plus d'utilité.+Cette //AppImage// est rendue exécutable (ligne 6) et exécutée pour forcer l'extraction dans le dossier, on peut ensuite effacer le //AppImage// (ligne 8) car il n'a plus d'utilité a conserver ce fichier.
  
 **Téléchargement des BIOS** **Téléchargement des BIOS**
Ligne 89: Ligne 100:
 # Create symlink for configuration # Create symlink for configuration
 RUN     mkdir /opt/86box/customs && \ RUN     mkdir /opt/86box/customs && \
-        touch /opt/86box/customs/86box.cfg && \ +        mkdir /opt/86box/media && \ 
-        ln -/opt/86box/customs/86box.cfg /opt/86box/squashfs-root/86box.cfg+        chown -R $LOCAL_USER:$LOCAL_USER /opt/86box/customs && \ 
 +        chown -R $LOCAL_USER:$LOCAL_USER /opt/86box/media && \ 
 +        mkdir /var/log/86box && \ 
 +        chown -R $LOCAL_USER:$LOCAL_USER /var/log/86box
 </code>        </code>       
  
-Cette immonde usine a gaz, permet de stocker le fichier config dans un folder "permanent"; +Nous créons 2 dossiers //customs// et //media// qui seront ensuite publiés en dehors du container pour sauvegarder les données de façons permanentes.
  
-** Configuration VNC Server**+Un dossier "/var/log/86box" est également créer pour recevoir les logs applicatifs.
  
-par défaut le password est celui passé en variable d’environnement, il pourra être changer par la suite.+**supervisor et publication de port** 
 +<code yaml [enable_line_numbers="true"]> 
 +#Copy in supervisor configuration for startup 
 +COPY    supervisord.conf /etc/supervisor/supervisord.conf 
 +</code> 
 + 
 +nous copions une version personnalisée de supervisord.conf dans etc. 
 + 
 +<code yaml [enable_line_numbers="true"]> 
 +EXPOSE  5901 
 +</code> 
 + 
 +Nous exposons le port 5901 (VNC) du container. 
 + 
 +**configuration du mode 'local user'** 
 + 
 +Comme nous désirons que l'application ne s'execute pas en mode 'root'; nous continuons sous l'utilisateur définit par l'argument "LOCAL_USER"
 + 
 +<code yaml [enable_line_numbers="true"]> 
 +# setup session as "LOCAL_USER", not root 
 +USER    $LOCAL_USER 
 +</code> 
 + 
 +**Configuration VNC Server** 
 + 
 +Par défaut le password est //password1//, il pourra être changer par la suite.
  
 <code yaml [enable_line_numbers="true"]> <code yaml [enable_line_numbers="true"]>
Ligne 109: Ligne 148:
 **configuration de ratpoison** **configuration de ratpoison**
  
-[[https://linuxpedia.fr/doku.php/ratpoison|RatPoison]] est sans doute l'une des découvertes les plus utile de ce tuto: c'est un gestionnaire de fenetre très intéressant, il n'a pas besoin de souris pour fonctionner, et en plus, il offre des possibilité de scripting/configuration avancées.+[[https://linuxpedia.fr/doku.php/ratpoison|RatPoison]] est sans doute l'une des découvertes les plus utile de ce tuto: c'est un gestionnaire de fenêtre très intéressant, il n'a pas besoin de souris pour fonctionner, et en plus, il offre des possibilités de scripting/ configuration et d'automation avancées.
            
 <code yaml [enable_line_numbers="true"]> <code yaml [enable_line_numbers="true"]>
Ligne 117: Ligne 156:
 </code> </code>
  
-Nous réduisons à 0 la bordure des applications (ligne 2), ensuite nous ordonnons a ratpoison d'executer l'émulateur.+Nous réduisons à 0 la bordure des applications (ligne 2) afin de ne pas avoir de cadre a notre application, ensuite nous ordonnons a ratpoison d'executer l'émulateur.
  
 **Quelques volumes** **Quelques volumes**
Ligne 123: Ligne 162:
 <code yaml [enable_line_numbers="true"]> <code yaml [enable_line_numbers="true"]>
 # Create volumes mount # Create volumes mount
-VOLUME /root/logs+VOLUME /var/log/86box
 VOLUME /opt/86box/customs VOLUME /opt/86box/customs
-VOLUME /opt/86box/squashfs-root/nvr +VOLUME /opt/86box/media
-VOLUME /opt/86box/squashfs-root/media+
 </code> </code>
                  
 **Supervisord** **Supervisord**
  
-l'image d'origine utilise également supervisord pour lancer des taches "de fond", comme le serveur VNC.+L'image d'origine utilise également supervisord pour lancer des taches "de fond", comme le serveur VNC.
  
 <code yaml [enable_line_numbers="true"]> <code yaml [enable_line_numbers="true"]>
 #Copy in supervisor configuration for startup #Copy in supervisor configuration for startup
-COPY    supervisord.conf /etc/supervisor/supervisord.conf 
 ENTRYPOINT [ "supervisord", "-c", "/etc/supervisor/supervisord.conf" ] ENTRYPOINT [ "supervisord", "-c", "/etc/supervisor/supervisord.conf" ]
 </code>         </code>        
  
-**Monter le port VNC**+====== Configuration ======
  
-<code yaml [enable_line_numbers="true"]> +Si tout se passe bien, vous devirez pouvoir vous connecter en VNC sur votre 86Box, au premier contact l'écran doit ressembler a ceci: 
-EXPOSE  5901 + 
-</code>+{{tutoriaux:docker-related:emuldock-86box-resize-pixels.png?400}} 
 + 
 +je vous suggère immédiatement de changer le paramètre: 
 + 
 +{{tutoriaux:docker-related:emuldock-86box-small-screen.png}}
  
 +pour utiliser tout l'écran, vous pouvez également utiliser de l'openGL (qui est installé)
  
 +{{tutoriaux:docker-related:emuldock-86box-opengl.png}}
tutoriaux/docker-related/creer-container-86box.1721155648.txt.gz · Dernière modification : 2024/07/16 20:47 de frater