Raspberry pi 3用64bit Docker Engine(弊社SDKでビルドしたもの)を含むディスクイメージを公開しました。64bit Linux kernel上で64bit Docker Engineの動作を実際にご確認いただけます。

手順は以下のとおりです。RaspbianによるRaspberry pi 3と同様の項目については特に説明していませんので、web等から情報を補ってご利用ください。

用意するもの:2Gバイト以上のmicroSDカード(東芝EXCERIAなど高速なものを推奨)

上記イメージをunxz等で伸張(解凍)し、Linuxのddコマンド等でmicroSDカードに書き込みます。64Mバイトのvfatでフォーマットされたbootパーティションと2Gバイト弱のext4でフォーマットされたrootパーティションができることをご確認ください。

デフォルトのコンソールは出力がHDMIのディスプレイ、入力がUSB接続のキーボードです。シリアルコンソールを使用したい場合はbootパーティションのファイルboot.scr.img.serialconsoleでboot.scr.imgで上書きしてください。

このmicroSDカードをRaspberry pi 3に挿して起動すると、コンソールに以下のようなメッセージが現れます。

U-Boot 2016.03-g9e6687d (Apr 04 2016 – 15:31:23 -0700)

DRAM: 944 MiB
RPI 3 Model B (0xa22082)
MMC: bcm2835_sdhci: 0
reading uboot.env
** Unable to read “uboot.env” from mmc0:1 **
Using default environment

In: serial
Out: lcd
Err: lcd
Net: Net Initialization Skipped
No ethernet found.
starting USB…
USB0: Core Release: 2.80a
scanning bus 0 for devices… 3 USB Device(s) found
scanning usb for storage devices… 0 Storage Device(s) found
scanning usb for ethernet devices… 1 Ethernet Device(s) found
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1…
Found U-Boot script /boot.scr.uimg
reading /boot.scr.uimg
285 bytes read in 11 ms (24.4 KiB/s)
## Executing script at 02000000
reading bcm2837-rpi-3-b.dtb
11517 bytes read in 20 ms (561.5 KiB/s)
reading image
9513920 bytes read in 828 ms (11 MiB/s)
## Flattened Device Tree blob at 00000100
Booting using the fdt blob at 0x000100
reserving fdt memory region: addr=0 size=1000
Loading Device Tree to 000000003ab2e000, end 000000003ab33cfc … OK

Starting kernel …

Booting Linux on physical CPU 0x0
Linux version 4.5.0+ (nao@ubuntu) (gcc version 4.8.2 20140110 (prerelease) [ibm/gcc-4_8-branch merged from gcc-4_8-branch, revision 205847] (Ubuntu/Linaro 4.8.2-13ubuntu1) ) #1 SMP PREEMPT Tue Apr 12 22:51:39 PDT 2016
Boot CPU: AArch64 Processor [410fd034]
cma: Reserved 16 MiB at 0x0000000039800000
PERCPU: Embedded 20 pages/cpu @ffffffc03af95000 s41728 r8192 d32000 u81920
Detected VIPT I-cache on CPU0
CPU features: enabling workaround for ARM erratum 845719
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 237888

(中略)
nf_conntrack version 0.5.0 (6820 buckets, 27280 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready

Debian GNU/Linux stretch/sid a0bdebfefdd8 ttyS0

a0bdebfefdd8 login:

カーネル起動直後のメッセージに「Boot CPU: AArch64 Processor」とあります。AArch64はarm64の別名で、カーネルが64bitモードで動作していることがわかります。

ログインプロンプトが表示されたら、rootユーザーでログインします。パスワードは「raspberry」です。

a0bdebfefdd8 login: root
Password:
Last login: Sat Apr 16 01:52:13 UTC 2016 on ttyS0
Linux a0bdebfefdd8 4.5.0+ #1 SMP PREEMPT Tue Apr 12 22:51:39 PDT 2016 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

root@a0bdebfefdd8:~#

ログインメッセージに「aarch64」とあるように、ユーザー空間もarm64アーキテクチャで動作しています。

次に、ネットワークに接続します。ここではDHCPサーバーを利用しますが、実際のご利用のネットワーク環境に合わせて設定してください。

root@a0bdebfefdd8:~# dhclient eth0
smsc95xx 1-1.1:1.0 eth0: hardware isn’t capable of remote wakeup
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
root@a0bdebfefdd8:~#

ネットワークが正しく設定されていることを確認しましょう。

root@a0bdebfefdd8:~# ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.11.133  netmask 255.255.255.0  broadcast 192.168.11.255

        inet6 2408:210:a9ab:4200:4c71:66ff:fe81:ef2a  prefixlen 64  scopeid 0x0<global>

        inet6 fe80::4c71:66ff:fe81:ef2a  prefixlen 64  scopeid 0x20<link>

        ether 4e:71:66:81:ef:2a  txqueuelen 1000  (Ethernet)

        RX packets 55  bytes 5642 (5.5 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 10  bytes 1692 (1.6 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@a0bdebfefdd8:~#

Docker Engineが自動的に起動しているはずです。稼働を確認しましょう。

root@a0bdebfefdd8:~# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.10.3
Storage Driver: devicemapper
Pool Name: docker-179:2-19960-pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB
Backing Filesystem: ext4
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 307.2 MB
Data Space Total: 107.4 GB
Data Space Available: 530.1 MB
Metadata Space Used: 729.1 kB
Metadata Space Total: 2.147 GB
Metadata Space Available: 530.1 MB
Udev Sync Supported: false
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Either use `–storage-opt dm.thinpooldev` or use `–storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.118 (2016-02-26)
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 4.5.0+
Operating System: Debian GNU/Linux stretch/sid
OSType: linux
Architecture: aarch64
CPUs: 4
Total Memory: 852.6 MiB
Name: a0bdebfefdd8
ID: MPEJ:VWCI:DTN6:U7VF:VOV5:XFBV:VJWI:3KW3:CB27:F2QN:OUA2:MCBY
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
WARNING: No cpuset support
root@a0bdebfefdd8:~#

Docker Engineのアーキテクチャもaarch64なのがわかります。

実際にネットワークからDockerイメージを取得してDockerコンテナを動作させてみましょう。

root@a0bdebfefdd8:~# docker run aarch64/hello-world
Unable to find image ‘aarch64/hello-world:latest’ locally
latest: Pulling from aarch64/hello-world
9b97e49a3f42: Extracting 1.416 kB/1.416 kB
9b97e49a3f42: Pull complete
Digest: sha256:d59db9dc6e41e703bc765a296ff18d0c281e82e83d065a9af354e415006c6f1e
Status: Downloaded newer image for aarch64/hello-world:latest
EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
device veth51664e8 entered promiscuous mode
IPv6: ADDRCONF(NETDEV_UP): veth51664e8: link is not ready
eth0: renamed from veth5eb933d
IPv6: ADDRCONF(NETDEV_CHANGE): veth51664e8: link becomes ready
docker0: port 1(veth51664e8) entered forwarding state
docker0: port 1(veth51664e8) entered forwarding state
IPv6: ADDRCONF(NETDEV_CHANGE): docker0: link becomes ready

Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client which sent it
to your terminal.

To try something more ambitidocker0: port 1(veth51664e8) entered disabled state
ous you veth5eb933d: renamed from eth0
can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images automate workflows and more with a free Docker Hub account:
https://hub.docker.com

For more examples and ideas visit:
https://docs.docker.com/userguide/

docker0: port 1(veth51664e8) entered disabled state
device veth51664e8 left promiscuous mode
docker0: port 1(veth51664e8) entered disabled state
root@a0bdebfefdd8:~#

このようにDocker Engineの動作を確認することができました。

 


注意:このページは参考のために作成・提供するものであり、技術的に未成熟な要素が含まれています。このディスクイメージを使用した結果について弊社では一切の責任を負いかねますのであらかじめご了承ください。

問い合わせ先:info@atbsd.com