Objet | Création d'un conteneur IE ou Edge |
---|---|
Niveau requis | débutant, avisé |
Débutant, à savoir | |
Suivi | :DRAFT: |
Ce lab contient des instructions de construction et Dockerfile
pour créer des images Docker avec des navigateurs Windows uniquement: Internet Explorer et Microsoft Edge
$ uname -a Bureau Linux 4.15.0-46-generic # 49-Ubuntu SMP Mer 6 Fév 09:33:07 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux
Pour vérifier que la virtualisation est prise en charge, vérifier que le fichier /dev/kvm
est présent:
$ ls -l /dev/kvm crw-rw ---- 1 racine kvm 10, 232 mars 8 19:38 /dev/kvm
$ qemu-system-x86_64 -version Emulateur QEMU version 2.11.1 (Debian 1: 2.11 + dfsg-1ubuntu7.10) Copyright (c) 2003-2017 Fabrice Bellard et les développeurs du projet QEMU
* Clé de licence Windows
$ mdir -c windows-image/image
$ cat windows-images/image/Dockerfile FROM ubuntu:18.04 RUN apt update && \ apt -y upgrade && \ apt -y install xvfb x11-utils x11vnc qemu COPY hdd.img / COPY snapshot.img / COPY entrypoint.sh / ENTRYPOINT ["/entrypoint.sh"]
$ cat windows-images/image/entrypoint.sh #!/bin/sh #!/bin/bash SCREEN_RESOLUTION=${SCREEN_RESOLUTION:-"1024x768x24"} DISPLAY_NUM=99 export DISPLAY=":$DISPLAY_NUM" clean() { if [ -n "$XVFB_PID" ]; then kill -TERM "$XVFB_PID" fi if [ -n "$X11VNC_PID" ]; then kill -TERM "$X11VNC_PID" fi } trap clean INT TERM # Démarrage de l'image docker sans serveur X avec le wrapper Xvfb. # - la première ligne démarre le wrapper graphique # - les lignes suivantes démarrent la VM xvfb-run -l -n $DISPLAY_NUM -s "-ac -screen 0 $SCREEN_RESOLUTION -noreset -listen tcp" \ qemu-system-x86_64 -enable-kvm \ -machine q35 -smp sockets=1,cores=1,threads=2 -m 2048 \ -usb -device usb-kbd -device usb-tablet -rtc base=localtime \ -net nic,model=virtio -net user,hostfwd=tcp::4444-:4444 \ -drive file=snapshot.img,media=disk,if=virtio \ -loadvm windows & XVFB_PID=$! retcode=1 until [ $retcode -eq 0 ]; do xdpyinfo -display $DISPLAY >/dev/null 2>&1 retcode=$? if [ $retcode -ne 0 ]; then echo Waiting xvfb... sleep 1 fi done # x11vnc pour prendre le contrôle du bureau à distance x11vnc -display $DISPLAY -passwd selenoid -shared -forever -loop500 -rfbport 5900 -rfbportv6 5900 -logfile /dev/null & X11VNC_PID=$! wait
$ cd windows-images
A partir du site Web de téléchargement de logiciels Microsoft.
virtio-win-0.1.141.iso. Dans les étapes suivantes, on suppose q'on a maintenant deux fichiers dans le répertoire actuel:
$ ls virtio-win-0.1.141.iso Win10_1809Oct_Français_x32.iso
$ qemu-img créer -f qcow2 hdd.img 40G
$ sudo qemu-system-x86_64 -enable-kvm \ -machine q35 -smp sockets = 1, cœurs = 1, threads = 2 -m 2048 \ -usb -device usb-kbd -device usb-tablet -rtc base = heure locale \ -net nic, model = utilisateur virtio -net, hostfwd = tcp :: 4444-: 4444 \ -drive file = hdd.img, media = disque, si = virtio \ -drive file = Win10_1809Oct_English_x32.iso, media = cdrom \ -drive file = virtio-win-0.1.141.iso, media = cdrom
Windows démarrera à partir de l'image d'installation
E:\viostor\w10\x86
virtio cdrom
et cliquer sur OKWebDriver
avec le test Selenium.Ces fichiers binaires gèrent les demandes de test Selenium et lancent le navigateur correspondant.
C:\Windows\System32
.DISM.exe / Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~00.1.1.0
Cet instantané contient l'état de la machine et est nécessaire pour restaurer rapidement la machine virtuelle au lieu d'effectuer un démarrage complet, ce qui est lent. Pour le créer:
$ qemu-img créer -b hdd.img -f qcow2 snapshot.img
$ sudo qemu-system-x86_64 -enable-kvm \ -machine q35 -smp sockets = 1, cœurs = 1, threads = 2 -m 2048 \ -usb -device usb-kbd -device usb-tablet -rtc base = heure locale \ -net nic, model = utilisateur virtio -net, hostfwd = tcp :: 4444-: 4444 \ -drive file = snapshot.img, media = disque, si = virtio \ -moniteur stdio
qemu fonctionne avec un moniteur connecté à stdio.
Internet Explorer
. La première fois que ce navigateur est lancé, il demande la configuration de la sécurité. L'option “Ne pas utiliser les paramètres recommandés” doit être sélectionnée.Internet Explorer
. Sélectionner l'option “Toujours fermer tous les onglets” lors de la fermeture d'Internet Explorer
Internet Explorer
et vérifier que le mode protégé est désactivé (cela peut être vu dans une boîte de message au bas du navigateur).MicrosoftWebDriver.exe --host = 10.0.2.15 --port = 4444 --verbose
C:\Windows\System32\IEDriverServer.exe --host = 0.0.0.0 --port = 4444 --log-level=DEBUG
(qemu) savevm windows
(qemu) quit
Pour démarrer la VM à partir d’un instantané manuellement, utiliser la commande suivante (cf entrypoint.sh) :
$ sudo qemu-system-x86_64 -enable-kvm \ -machine q35 -smp sockets=1, core=1, threads=2 -m 2048 \ -usb -device usb-kbd -device usb-tablet -rtc base = heure locale \ -net nic, model=user virtio -net, hostfwd=tcp::4444-:4444 \ -drive file=snapshot.img, media=disk, if=virtio \ -loadvm windows
$ mv hdd.img snapshot.img image $ cd image
$ docker build -t windows/edge:18. # Pour Microsoft Edge
$ docker build -t windows/ie:11. # Pour Internet Explorer
$ docker run -it --rm --privileged -p 4444:4444 -p 5900:5900 windows/edge:18 # pour Microsoft Edge
$ docker run -it --rm --privileged -p 4444:4444 -p 5900:5900 windows/ie:11 # pour Internet Explorer
Pour voir l'écran Windows à l'intérieur du conteneur en cours d'exécution,
vnc://localhost:5900
en utilisant le sélénoïde comme mot de passe.