| 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\x86virtio 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.0Cet 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 ExplorerInternet 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 --verboseC:\Windows\System32\IEDriverServer.exe --host = 0.0.0.0 --port = 4444 --log-level=DEBUG(qemu) savevm windows(qemu) quitPour 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.