Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
technique:docker:general:quemu_cross_running [2021/01/22 11:33] – [QEMU dans Docker : le meilleur des 2 mondes] gblond | technique:docker:general:quemu_cross_running [2021/10/16 18:19] (Version actuelle) – qduchemi | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{indexmenu_n> | {{indexmenu_n> | ||
- | # QEMU : Utiliser des conteneurs avec une architecture | + | # QEMU : utiliser |
+ | |||
+ | < | ||
+ | Cet article est très spécifique, | ||
+ | </ | ||
Saviez-vous que l' | Saviez-vous que l' | ||
Ligne 16: | Ligne 21: | ||
< | < | ||
- | Il y a plusieurs cas d’utilisation où il est utile émuler un microprocesseur différent de celui de la machine hôte, notamment durant des phases de développement ou de test d’un programme. Imaginez que vous développez un gros logiciel compilé pour des Raspberry Pi, architecture ARMv7, mais que votre poste de travail est équipé d’un microprocesseur x86-AMD64. Il y a alors 4 manières de compiler ce programme : | + | Il y a plusieurs cas d’utilisation où il est utile d’émuler un microprocesseur différent de celui de la machine hôte, notamment durant des phases de développement ou de test d’un programme. Imaginez que vous développez un gros logiciel compilé pour des Raspberry Pi, architecture ARMv7, mais que votre poste de travail est équipé d’un microprocesseur x86-AMD64. Il y a alors 4 manières de compiler ce programme : |
* Compiler depuis une Raspberry Pi : cette solution fonctionne pour des petits projets, mais montre rapidement ses limites en matières de ressources matérielles disponibles (surtout la RAM), et est en général la plus lente des 4 solutions ; | * Compiler depuis une Raspberry Pi : cette solution fonctionne pour des petits projets, mais montre rapidement ses limites en matières de ressources matérielles disponibles (surtout la RAM), et est en général la plus lente des 4 solutions ; | ||
Ligne 66: | Ligne 71: | ||
mask ffffffffffffff00fffffffffffffffffeffffff | mask ffffffffffffff00fffffffffffffffffeffffff | ||
</ | </ | ||
+ | |||
+ | Cette méthode a l' | ||
### Exécuter un conteneur d’une architecture incompatible | ### Exécuter un conteneur d’une architecture incompatible | ||
- | Comme indiqué dans l' | + | Comme indiqué dans l' |
Voici un exemple d' | Voici un exemple d' | ||
+ | |||
< | < | ||
$ uname -a | $ uname -a | ||
Ligne 82: | Ligne 90: | ||
</ | </ | ||
- | < | + | < |
Si vous obtenez l' | Si vous obtenez l' | ||
Ligne 88: | Ligne 96: | ||
standard_init_linux.go: | standard_init_linux.go: | ||
</ | </ | ||
- | c’est que vous avez oublié | + | c’est que vous avez oublié |
- | < | + | </bootnote> |
À partir de maintenant, il est possible d' | À partir de maintenant, il est possible d' | ||
Ligne 143: | Ligne 151: | ||
Linux 211b99ac36e4 5.8.0-38-generic #43-Ubuntu SMP Tue Jan 12 12:42:13 UTC 2021 aarch64 GNU/Linux | Linux 211b99ac36e4 5.8.0-38-generic #43-Ubuntu SMP Tue Jan 12 12:42:13 UTC 2021 aarch64 GNU/Linux | ||
</ | </ | ||
+ | |||
+ | De même, il est possible d' | ||
+ | |||
+ | < | ||
+ | Suivant les clients dockers, il est possible que l' | ||
+ | |||
+ | Pour connaître l' | ||
+ | |||
+ | <code bash> | ||
+ | $ docker inspect test_docker | grep Architecture | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | En théorie, rien ne vous interdit de copier un binaire d'une architecture A dans une image d'une architecture B. Cependant, vous ne pourrez pas l' | ||
+ | </ |