LoginSignup
20
16

More than 5 years have passed since last update.

x86_64のUbuntuでarm64のdockerイメージを動かす (クロスでdocker実行)

Last updated at Posted at 2018-10-24

クロスDockerのためのDockerfileという記事を以前書いたのですが、現在のバージョンのdockerではDockerfileを書かなくてもすむようになっていました。

Ubuntu 18.04 を使用しています。

docker run を実行

$ docker run -it arm64v8/ubuntu:18.04
standard_init_linux.go:195: exec user process caused "no such file or directory"

これはアーキテクチャが異なるので実行はエラーになります。

スタティックリンクされたqemuをコンテナの中にコピーする

まずはコンテナIDを確認。

$ docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS                      PORTS               NAMES
388345ce4956        arm64v8/ubuntu:18.04   "/bin/bash"         19 minutes ago      Exited (0) 39 seconds ago                       goofy_agnesi
$

そのコンテナの中にqemu-aarch64-static をコピーする。これはx86_64の実行ファイル。

sudo apt install qemu-user-static
docker cp /usr/bin/qemu-aarch64-static 388345ce4956:/usr/bin/qemu-aarch64-static

コンテナをcommit してdocker image を作成

$ docker commit 388345ce4956 arm64v8/ubuntu:18.04_cross
sha256:2ae592d2c21dd0f77954f83152e26fb17816e83aa94855a59bfe0e18ac8fe963

docker run を実行

今度は正常に実行できます。

$ docker run -it arm64v8/ubuntu:18.04_cross
root@828eebd24c03:/# ls
bin   dev  home  media  opt   root  sbin  sys  usr
boot  etc  lib   mnt    proc  run   srv   tmp  var
root@828eebd24c03:/# uname -a
Linux 828eebd24c03 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
20
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
16