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 Prochaine révisionLes deux révisions suivantes | ||
technique:docker:general:quemu_cross_running [2021/01/22 11:46] – [QEMU dans Docker : le meilleur des 2 mondes] gblond | technique:docker:general:quemu_cross_running [2021/01/22 13:43] – [Présentation] gblond | ||
---|---|---|---|
Ligne 16: | Ligne 16: | ||
< | < | ||
- | 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 66: | ||
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 85: | ||
</ | </ | ||
- | < | + | < |
Si vous obtenez l' | Si vous obtenez l' | ||
Ligne 88: | Ligne 91: | ||
standard_init_linux.go: | standard_init_linux.go: | ||
</ | </ | ||
- | c’est que vous avez oublié | + | c’est que vous avez oublié |
</ | </ | ||
Ligne 143: | Ligne 146: | ||
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' | 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' | ||
</ | </ |