RaspberryPi 4 に Docker をインストールした。

はじめに

Raspberry Pi 4 にDocker をインストールした記録になります。

作業環境

・H/W: Raspberry Pi 4
・OS : Ubuntu 18.04 

1. Dockerインストール

基本的には下記リンクに沿ってインストール作業をしていきます。
下には自分の環境で実行した手順を記載しています。

$ sudo apt update

$ sudo apt install \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg-agent \
  software-properties-common
  
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  ----
  OK
  ----
  
$ sudo add-apt-repository \
  "deb [arch=arm64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"
   
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
$ docker --version
  -------------------------------------
  Docker version 19.03.8, build afacb8b
  -------------------------------------
   
$ sudo usermod -aG docker ${USER}
$ sudo gpasswd -a ${USER} docker
$ docker container ls -a
  ------------------------------------------------------------------
  Got permission denied 
  while trying to connect to the Docker daemon socket at 
  unix:///var/run/docker.sock: 
  Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json?all=1:
  dial unix /var/run/docker.sock: connect: permission denied
  ------------------------------------------------------------------
   
$ ls -lh /var/run/docker.sock
  ------------------------------------------------------------
  srw-rw---- 1 root docker 0 Feb 26 23:31 /var/run/docker.sock
  ------------------------------------------------------------
   
$ sudo chmod 666 /var/run/docker.sock
$ docker container ls -a
  -----------------------------------------------------------
  CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
  -----------------------------------------------------------

2. Docker-Compose インストール

Kubernetesを利用前提としているので、docker-composeは無くてもいいのですが、検証環境利用なので今のうちにインストールします。

$ sudo apt install python3-pip libffi-dev libssl-dev
$ sudo pip3 install -U docker-compose
$ docker-compose -v
  --------------------------------------------
  docker-compose version 1.25.4, build unknown
  --------------------------------------------

3. Dockerインストールの確認と調整

Dockerのインストールが完了したら、現在の状態を確認してみます。

$ docker info
  -----------------------------------------------------------------
  Client:
   Debug Mode: false
        
  Server:
   Containers: 0
    Running: 0
    Paused: 0
    Stopped: 0
   Images: 0
   Server Version: 19.03.8
   Storage Driver: overlay2
    Backing Filesystem: <unknown>
    Supports d_type: true
    Native Overlay Diff: true
   Logging Driver: json-file
   Cgroup Driver: cgroupfs
   Plugins:
    Volume: local
    Network: bridge host ipvlan macvlan null overlay
    Log: awslogs fluentd gcplogs gelf journald json-file 
         local logentries splunk syslog
   Swarm: inactive
   Runtimes: runc
   Default Runtime: runc
   Init Binary: docker-init
   containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
   runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
   init version: fec3683
   Security Options:
    apparmor
    seccomp
     Profile: default
   Kernel Version: 5.3.0-1018-raspi2
   Operating System: Ubuntu 18.04.4 LTS
   OSType: linux
   Architecture: aarch64
   CPUs: 4
   Total Memory: 3.703GiB
   Name: wpfaros-node-001
   ID: TDMI:IHAL:TOTF:XKIK:EI62:MC64:KUWW:L4CN:DJYF:2NO2:X4W7:DPGH
   Docker Root Dir: /var/lib/docker
   Debug Mode: false
   Registry: https://index.docker.io/v1/
   Labels:
   Experimental: false
   Insecure Registries:
    127.0.0.0/8
   Live Restore Enabled: false
     
  WARNING: No memory limit support
  WARNING: No swap limit support
  WARNING: No kernel memory limit support
  WARNING: No kernel memory TCP limit support
  WARNING: No oom kill disable support
  -----------------------------------------------------------------

いくつかWarningメッセージがあります。内容的に色々サポートしてないと言われてます。
そんなこと言わないでサポートして欲しい。そんな思いで解決していきます。

新たにcgroup関連のパラメーターを追記すれば、解決します。

$ cd /boot/firmware

$ sudo vi nobtcmd.txt
  ----------------------------------------------------------------------
  net.ifnames=0 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 
  root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc 
  cgroup_enable=cpu cgroup_enable=memory cgroup_memory=1 swapaccount=1
  ----------------------------------------------------------------------
 
$ sudo reboot
 
$ docker info | grep warning
  --> nothing message.

下記のコマンドにて、cgroupsの状態も確認出来ます。

$ cat /proc/cgroups
  ----
  #subsys_name        hierarchy        num_cgroups        enabled
  cpuset           9         1        1
  cpu              7        37        1
  cpuacct          7        37        1
  blkio            6        37        1
  memory           0        45        0 --> 設定追加すると"1"になって有効
  devices          8        37        1
  freezer          3         1        1
  net_cls          10        1        1
  perf_event        4        1        1
  net_prio         10        1        1
  pids              5       42        1
  rdma              2        1        1
  ----

おわりに。

これにて、Dockerインストールとdocker-composeのインストールは完了です。結構簡単にインストールができるのはいいですね。
#最後のwarning調査で僕は時間かかりましたけどね。
次回、Kubernetes のインストールを行います。

この記事が気に入ったらサポートをしてみませんか?