ARM CPUなScalewayのC1インスタンスでDockerを入れてみた。今運用しているサーバーはrita-ch.com(nginx+php-fpm)しか運用しておらずリソースが余って仕方なかった&話題のMastodonをDockerで立てられるかなぁと思ったので。
以下の手順はサーバー作成の際にUbuntuを選択した場合を想定している。
カーネルを変更する
デフォルトのカーネルでは必要なモジュールが入っていなくDockerが使えないので対応カーネルに変更する。
ScalewayのコントロールパネルのServersからDockerを使うサーバーを選択し、ADVANCEDの右側にあるShowをクリックする。
表示されたBOOT SCRIPTのカーネル名またはEditをクリックすると使用するカーネルが選択できるようになるので、そこからarmv7l 4.10.8 docker #1(執筆時点でのバージョンだが、dockerが付いているものであればよい)を選択し、✔を押す。
その後ON/OFFスイッチをクリックしHARD REBOOT→Power offで再起動する。
HARD REBOOTしているのは筆者環境ではどういうわけかrebootコマンドでうまく再起動しないため。もしかしたらrebootコマンド掛けた後にHARD REBOOTのほうがいいかもしれない。そういやシリアルコンソールもどういうわけかうまく動かないな…
Dockerをぶっこむ
王道な方法(get.docker.com)でインストールするが、念の為必要そうな物を手動でインストールする。不足があってもインストールスクリプトが自動的に入れてくれるが…(dirmngrとか)
インストール後はdockerグループに自分自身を入れて一般ユーザー権限でも実行できるようにする。usermod後は再ログインすべし。
$ sudo apt-get install apparmor arping aufs-tools btrfs-tools bridge-utils cgroup-lite ifupdown kmod lxc python-setuptools vlan $ curl -sSL https://get.docker.com/ | sh $ sudo usermod -aG docker hogehoge
ハローワールドで動作試験
ARM向けのコンテナイメージを配信しているarmhfレポジトリのhello-worldを実行する。通常のコンテナイメージ(x86_64)は動かないので注意。
$ docker run --rm armhf/hello-world (hello-worldの初回起動時はここにイメージのダウンロード状況が出てくる) Hello from Docker on armhf! This message shows that your installation appears to be working correctly. (以下略)
ちなみにARM向けのコンテナイメージやバリエーションはそんなに多くない。もし検索する時はDocker HubのWebからarmhfやarmv7lとかで検索してみるといいかも。