Docker实现异构容器的创建

需求背景

需要在X86的环境中,生成非X86架构的Docker容器,譬如arm以及ppc等。

基本思路

需要借助一款类似于转译cpu指令的程序:qumu-user-static。每一个异构容器的内部指令都会通过此程序转译给底层的X86架构cpu,从而实现上述功能。

简要过程步骤

1. 首先打开Linux内核的binfmt功能。该功能就是告诉linux什么样的文件等该用什么样的程序打开。这里主要是为了让Linux知道,系统在运行arm等架构的程序指令时,自动调用qemu-user-static来执行。开启方式有两个:

临时开启,断电失效:

mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

修改配置文件,永久生效:

在文件/etc/fstab中添加一行:

none  /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0

2. 注册qemu-user-static虚拟机(负责指令的转移等任务,使其支持异构)

docker run --rm --privileged multiarch/qemu-user-static:register –reset

3. 运行指定架构的Docker容器即可:

如:docker run -it multiarch/alpine:armhf-edge /bin/sh

注:不同架构的docker镜像可以去这里获取。

你可能感兴趣的:(go,Docker,内核,docker,linux)