Page tree

Michael O'Brien

Skip to end of metadata
Go to start of metadata

Quickstart

K38 - ARM ready Kubernetes from Rancher

https://k3s.io/

Raspberry PI 4

4GB! 64bit Broadcom BCM2711, quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz

Flash the SD card

Raspbian Buster Lite is headless - so no startx

Expand the FS

"sudo raspi-config" - sect 7 - a1 expand fs, reboot

Enable ssh 

On raspian ssh is disabled by default - enable it by running "sudo raspi-config" selecting 5 - interfacing options - ssh

pi@pi0:~ $ sudo raspi-config 
# change password
passwd
# change hostname
sudo nano /etc/hostname
sudo nano /etc/hosts

sudo nano /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
sudo reboot now

#install docker
curl -sSL get.docker.com | sh && sudo usermod pi -aG docker
sudo usermod -aG docker pi
# disable swap
sudo systemctl disable dphys-swapfile.service
sudo reboot now
pi@pi2:~ $ docker --version
Docker version 19.03.5, build 633a0ea

# test docker by running apache
pi@pi1:~ $ docker run -d -p:8080:80 --name httpd httpd
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
3cf3d03fb414: Pull complete 
a35a7920ba0c: Pull complete 
f4fd36ebd426: Pull complete 
3ebb7ff13b48: Pull complete 
97fe9643e430: Pull complete 
Digest: sha256:ac6594daaa934c4c6ba66c562e96f2fb12f871415a9b7117724c52687080d35d
Status: Downloaded newer image for httpd:latest
09077cbaff9c1c57d10e487076c09406b4a899e744522971764cd3a96905e557

pi@pi1:~ $ docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS              PORTS                  NAMES
004e50acd779        httpd               "httpd-foreground"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp   httpd

pi@pi1:~ $ curl http://127.0.0.1:8080
<html><body><h1>It works!</h1></body></html>

# upload ssh keys

Install Kubernetes on Raspberry PI via RKE

https://gist.github.com/ags131/7bdde11c932ef7a54f44c6decbfd88b8

Kubernetes Developer Guide#Installations.1

Install Java 8

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Ideally we would use Java 11 LTS - and the 64 bit version does not work with Raspian lite - need a 64bit OS

# SCP from a host machine
michaelobrien@biometric 2019 % scp ~/rpi/jdk-8u231-linux-arm32-vfp-hflt.tar.gz pi@192.168.0.34:~/

pi@pi0:~ $ sudo mkdir /usr/java
pi@pi0:~ $ cd /usr/java
pi@pi0:/usr/java $ sudo tar xf ~/jdk-8u231-linux-arm32-vfp-hflt.tar.gz
pi@pi0:/usr/java $ sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_231/bin/java 1000
update-alternatives: using /usr/java/jdk1.8.0_231/bin/java to provide /usr/bin/java (java) in auto mode
pi@pi0:/usr/java $ sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_231/bin/javac 1000
update-alternatives: using /usr/java/jdk1.8.0_231/bin/javac to provide /usr/bin/javac (javac) in auto mode

pi@pi0:/usr/java $ java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) Server VM (build 25.231-b11, mixed mode)

Run fully saturated cores using a MapReduce Algorithm

Getting thermal throttling within 3 min of running all cores at 100%.

pi0
sec, 2^threads, 2^packets, threads
151507,3,22,15122,8
173519,3,21,17321,16
172771,3,20,17220,32

pi1
169114,3,22,16922,8
192782,3,21,19221,16


Raspberry PI 3

1GB Arm Cortex-A53 1.2GHz

As part of OPNFV integration I need to validate running ONAP on ARM processor cores.  My only experience with ARM is during iOS development or on Broadcom chips.  We will run on the Broadcom chips to start.  Note that this is pure experimentation - in that the granularity of the v3 boards is only 1Gb - which will not run most of our pods properly.

Holiday setup of a kubernetes cluster on arm based Broadcom 2837 SOC boards

Flash Raspian to all the SD cards

Enable ssh, wireless, rename host

sudo nano /etc/wpa_supplicant//wpa_supplicant.conf

Docker Setup

Kubernetes Developer Guide#DockerInstallation

Raspberry PI 4

pi@pi0:~ $ history
    4  sudo iwlist wlan0 scan
    5  sudo nano /etc/wpa_supplicant/wpa_supplicant.conf 
    6  sudo reboot
    8  sudo raspi-config
    9  sudo nano /etc/ssh/sshd_config
   10  sudo apt install openssh-server
   11  sudo raspi-config

   56  sudo nano /etc/sysctl.conf
   57  sudo apt-get update
   58  sudo apt-get upgrade
   59  sudo reboot now
Install docker
   60  curl -sSL get.docker.com | sh && sudo usermod pi -aG docker
   61  sudo usermod -aG docker pi
   62  sudo systemctl disable dphys-swapfile.service
   63  sudo reboot now

pi@pi0:~ $ docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:37:22 2019
 OS/Arch:           linux/arm
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea
  Built:            Wed Nov 13 07:31:17 2019
  OS/Arch:          linux/arm
  Experimental:     false
 containerd:
  Version:          1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683


pi@pi0:~ $ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
4ee5c797bcd7: Pull complete 
Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f
Status: Downloaded newer image for hello-world:latest

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.
    (arm32v7)
 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 ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

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

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

pi@pi0:~ $ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
91211a3e5733        hello-world         "/hello"            5 seconds ago       Exited (0) 4 seconds ago                       epic_chatterjee


Raspberry PI 3

curl -sSL https://get.docker.com | sh

sudo usermod -aG docker pi

Note: Docker 17.11.0-ce requires memory control groups - either downgrade to 17.09.0-ce or adjust /boot/cmdline.txt


pi@pi0:~ $ docker run hello-world
Status: Downloaded newer image for hello-world:latest
docker: Error response from daemon: cgroups: memory cgroup not supported on this system: unknown.
ERRO[0007] error waiting for container: context canceled 
pi@pi0:~ $ docker version
Client:
 Version:      17.11.0-ce
 OS/Arch:      linux/arm
pi@pi0:~ $ sudo apt install docker-ce=17.09.0~ce-0~raspbian
pi@pi0:~ $ docker run hello-world
Hello from Docker!
pi@pi0:~ $ sudo nano /boot/cmdline.txt
pi@pi0:~ $ cat /boot/cmdline.txt 
# add to the end of first line: cgroup_enable=memory cgroup_memory=1
# reboot

Kubernetes Setup

http://blog.kubernetes.io/2015/12/creating-raspberry-pi-cluster-running.html

https://blog.alexellis.io/serverless-kubernetes-on-raspberry-pi/

https://gist.github.com/alexellis/fdbc90de7691a1b9edb545c17da2d975

https://blog.zhaw.ch/icclab/supporting-container-based-application-deployment-to-heterogeneous-hardware-using-rancher/





pi034
pi135
pi240
pi339
pi438
pi537


Debian Bootstrap

enable wireless, add WPA region

see https://wiki.onap.org/display/DW/ONAP+on+ARM+Cortex-A53

Raspberry PI Model B

My 32 node beowulf (pre-Kubernetes) cluster that ran remote EJB 3 stateless session beans from a master WebLogic 10.3 server - http://eclipsejpa.blogspot.com/2012/11/java-7-se-parallel-processing-cluster.html and https://www.framboise314.fr/32-raspberry-pi-pour-du-calcul-parallele-en-java/

Config

Enable Wifi

 https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

sudo iwlist wlan0 scan
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

# change country from GB to CA - we are in Canada here
country=CA
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
   ssid="ssid-yours"
   psk="***"
}


sudo reboot
ifconfig


Components

Waveshare 3.5 RPi Touchscreen

see image history in Waveshare RPi TFT screen Raspian Image

https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)

write SD cards with https://www.waveshare.com/wiki/File:Win32DiskImager.zip - newer version https://raspberry-projects.com/pi/pi-operating-systems/win32diskimager via http://sourceforge.net/projects/win32diskimager/files/latest/download

  • No labels

1 Comment

  1. Last login: Tue Nov  5 00:34:34 2019
    pi@pi0:~ $ history
        1  ifconfig
        2  df
        3  free
        4  top
        5  java -version
        6  sudo iwlist wlan0 scan
        7  sudo iwlist wlan0 scan  gr
        8  sudo iwlist wlan0 scan
        9  sudo nano /etc/wpa_supplicant//wpa_supplicant.conf 
       10  sudo reboot now
       11  history
       12  ifconfig
       13  ping www.google.com
       14  sudo ifdonw wlan0
       15  sudo ifdown wlan0
       16  sudo vi /etc/network/interfaces
       17  sudo iwlist wlan0 scan
       18  sudo vi /etc/network/interfaces
       19  sudo raspi-config
       20  sudo nano /etc/wpa_supplicant//wpa_supplicant.conf 
       21  sudo iwlist wlan0 scan
       22  sudo raspi-config
       23  sudo nano /etc/wpa_supplicant//wpa_supplicant.conf 
       24  sudo raspi-config
       25  sudo ifdown wlan0
       26  sudo ifup
       27  ifconfig
       28  sudo ifdown wlan0
       29  top
       30  ls
       31  pwd
       32  exit
       33  history
       34  sudo apt-get upgrade
       35  exit
       36  ls
       37  ls -la
       38  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 8 9 1
       39  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 16 17 1
       40  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 2 3 1
       41  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 1 2 1
       42  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 3 4 1
       43  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1
       44  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 3 4 1
       45  exit
       46  ping www.google.com
       47  sudo apt-get update
       48  ifconfig
       49  top
       50  sudo shutdown now
       51  top
       52  df
       53  free
       54  java -version
       55  exit
       56  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 3 4 1
       57  exit
       58  ifconfig
       59  shutdown now
       60  ifconfig
       61  sudo reboot now
       62  java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1
       63  shutdown now
       64  history
       65  sudo apt-get update
       66  exit
       67  ifconfig
       68  curl -sSL https;//get.docker.com | sh
       69  curl -sSL https://get.docker.com | sh
       70  sudo usermod -aG docker pi
       71  exit
       72  tail -f nohup.out 
       73  ls
       74  rm -rf org.obrienscience.collatz.server.ForkJoinCollatzServer_20160711.jar 
       75  scp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar pi@192.168.0.35:/
       76  scp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar pi@192.168.0.34:/
       77  scp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar pi@192.168.0.34
       78  exit
       79  scp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar pi@192.168.0.34:/home/pi
       80  scp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar pi@192.168.0.33:/home/pi
       81  exit
       82  scp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar pi@192.168.0.35:/home/pi
       83  exit
       84  scp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar pi@192.168.0.35:/home/pi
       85  exit
       86  scp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar pi@192.168.0.36:/home/pi
       87  exit
       88  tail -f nohup.out 
       89  history
       90  ifconfig
       91  ping 192.168.0.1
       92  free
       93  nohup java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1 &
       94  cat nohup.out 
       95  cat nohup.out 
       96  sudo shutdown now
       97  ls
       98  cp nohup.out nohup0.out
       99  nohup java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1 &
      100  exit
      101  ls ~/.ssh
      102  exit
      103  ls
      104  cp id_rsa ~/.ssh
      105  ls -la
      106  q
      107  exit
      108  nano ~/.ssh/known_hosts 
      109  nano ~/.ssh/authorized_keys
      110  exit
      111  nano ~/.ssh/authorized_keys
      112  exit
      113  nohup java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1 &
      114  top
      115  ssh pi@192.168.15.5
      116  ssh pi@192.168.15.6
      117  sudo nano /etc/hosts
      118  ssh pi@192.168.15.7
      119  sudo nano /etc/hosts
      120  ssh pi@192.168.15.8
      121  sudo nano /etc/hosts
      122  ps -ef | grep java
      123  sudo kill -9 1847
      124  ssh pi@pi2
      125  ssh pi@pi1
      126  ssh pi@pi3
      127  ssh pi@pi2
      128  ssh pi@pi1
      129  curl -sSL https://get.docker.com | sh
      130  docker run hello-world
      131  docker version
      132  sudo nano /boot/cmdline.txt
      133  sudo reboot now
      134  ping www.google.com
      135  history
      136  ssh pi@pi1
      137  ssh pi@pi2
      138  ssh pi@pi3
      139  scp /home/pi/.ssh/id_rsa  pi@pi3:~/
      140  [A:~/
      141  scp /home/pi/.ssh/id_rsa  pi@pi1:~/
      142  ssh pi@pi3
      143  ssh pi@pi2
      144  ssh pi@pi1
      145  ssh pi@pi3
      146  tail -f nohup
      147  tail -f nohup.out 
      148  docker ps
      149  docker ps -a
      150  docker images
      151  docker run hello-world
      152  docker version
      153  sudo apt install docker-ce=17.09.0~ce-0~raspbian
      154  docker run hello-world
      155  vi /boot/cmdline.txt
      156  sudo vi /boot/cmdline.txt
      157  sudo nano /boot/cmdline.txt
      158  cat /boot/cmdline.txt 
      159  docker run hello-world
      160  tail -f nohup.out 
      161  ifconfig
      162  top
      163  docker run hello-world
      164  curl -L -o k8s-on-rpi.zip https://github.com/awassink/k8s-on-rpi/archive/master.zip
      165  sudo apt-get update
      166  sudo apt-get install unzip 
      167  unzip k8s-on-rpi.zip
      168  k8s-on-rpi-master/install-k8s-master.sh
      169  docker ps
      170  docker ps -a
      171  sudo k8s-on-rpi-master/install-k8s-master.sh
      172  systemctl status docker-bootstrap.service
      173  journalctl -xe
      174  dockerd
      175  sudo dockerd
      176  docker ps
      177  sudo reboot now
      178  docker ps
      179  top
      180  docker ps
      181  git clone https://github.com/openfaas/faas-netes &&   cd faas-netes 
      182  cat >> /etc/dhcpcd.conf
      183  vi /etc/dhcpcd.conf
      184  nano /etc/dhcpcd.conf
      185  ifconfig
      186  sudo reboot now
      187  ifconfig
      188  nano /etc/dhcpcd.conf
      189  sudo reboot now
      190  ifconfig
      191  nano /etc/network/interfaces
      192  udo dphys-swapfile swapoff &&   sudo dphys-swapfile uninstall &&   sudo update-rc.d dphys-swapfile remove
      193  sudo dphys-swapfile swapoff &&   sudo dphys-swapfile uninstall &&   sudo update-rc.d dphys-swapfile remove
      194  sudo reboot now
      195  curl -sSL get.docker.com | sh && sudo usermod pi -aG docker
      196  ps -ef | grep docker
      197  sudo kill -9 1104
      198  ps -ef | grep docker
      199  sudo kill -9 1326
      200  ps -ef | grep docker
      201  systemctl status
      202  systemctl stop k82-flannel.service
      203  systemctl stop k8s-flannel.service
      204  ps -ef | grep docker
      205  docker ps
      206  sudo reboot now
      207  docker ps
      208  curl -sSL get.docker.com | sh
      209  ssh pi@pi3
    Desktop    Downloads   id_rsa             k8s-on-rpi.zip  nohup0.out  org.obrienscience.collatz.server.ForkJoinCollatzServer.jar  Pictures  python_games  Videos
    Documents  faas-netes  k8s-on-rpi-master  Music           nohup.out   pi@192.168.0.34                                             Public    Templates
    pi@pi0:~ $ free
                  total        used        free      shared  buff/cache   available
    Mem:         978000       96244      624296
    
    Last login: Tue Nov  5 00:34:35 2019
    pi@pi2:~ $ history
        1  ifconfig
        2  ssh pi@192.168.0.33
        3  ifconfig
        4  ssh pi@192.168.0.33
        5  ls
        6  pwd
        7  ls
        8  ls /home/pi
        9  ls -la
       10  ls /home
       11  ls /home/pi
       12  ssh pi@192.168.0.33
       13  ls /home/pi
       14  nohup java -cp  org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1 &
       15  ps -ef | grep org
       16  top
       17  cat nohup.out 
       18  ssh pi@192.168.0.33
       19  ssh pi@192.168.0.34
       20  ssh pi@192.168.0.36
       21  sudo shutdown now
       22  ls
       23  cop nohup.out nohup0.out 
       24  cp nohup.out nohup0.out 
       25  nohup java -cp  org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1 &
       26  exit
       27  ps -ef | grep java
       28  exit
       29  nano ~/.ssh/authorized_keys
       30  exit
       31  docker ps
       32  curl -sSL https://get.docker.com | sh
       33  sudo usermod -aG docker pi
       34  exit
       35  docker run hello-world
       36  sudo nano /boot/cmdline.txt
       37  exit
       38  nohup java -cp  org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1 &
       39  top
       40  ps -ef | java
       41  ps -ef | grep java
       42  sudo kill -9 1029
       43  ps -ef | grep java
       44  top
       45  docker run hello-world
       46  sudo nano /boot/cmdline.txt
       47  sudo reboot now
       48  docker run hello-world
       49  exit
       50  top
       51  sudo shutdown now
       52  exit
       53  history
    pi@pi2:~ $ ls
    Desktop  Documents  Downloads  id_rsa  Music  nohup0.out  nohup.out  org.obrienscience.collatz.server.ForkJoinCollatzServer.jar  Pictures  Public  python_games  Templates  Videos
    
    
    pi@pi3:~ $ history
        1  cat nohup.out 
        2  sudo shutdown now
        3  ifconfig
        4  ssh pi@192.168.0.33
        5  nohup java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 3 4 1
        6  ps -ef | grep org
        7  nohup java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 3 4 1 &
        8  top
        9  ifconfig
       10  exit
       11  sudo nano /etc/authorized_keys
       12  exit
       13  history
       14  sudo nano ~/.ssh/authorized_keys
       15  rm -rf /etc/authorized_keys 
       16  sudo rm -rf /etc/authorized_keys 
       17  exit
       18  ps -ef | grep java
       19  sudo kill -9 1762
       20  curl -sSL https://get.docker.com | sh
       21  sudo usermod -aG docker pi
       22  exit
       23  nohup java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 5 1 &
       24  top
       25  docker ps
       26  docker run hello-world
       27  sudo nano /boot/cmdline.txt
       28  docker run hello-world
       29  sudo reboot now
       30  docker run hello-world
       31  exit
       32  ifconfig
       33  exit
       34  top
       35  docker ps
       36  sudo curl https://releases.rancher.com/install-docker/1.12.sh | sh
       37  docker ps
       38  docker version
       39  sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.6 http://192.168.15.101:8880/v1/scripts/5A1D67EEE3D03C510296:1483142400000:LuCv9cX9vjRdNCG6suJHn3s
       40  sudo shutdown now
       41  history
    
    pi@pi3:~ $ sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    pi@pi3:~ $ sudo docker version
    Client:
     Version:      17.11.0-ce
     API version:  1.34
     Go version:   go1.8.3
     Git commit:   1caf76c
     Built:        Mon Nov 20 19:01:07 2017
     OS/Arch:      linux/arm
    
    Server:
     Version:      17.11.0-ce
     API version:  1.34 (minimum version 1.12)
     Go version:   go1.8.3
     Git commit:   1caf76c
     Built:        Mon Nov 20 18:54:12 2017
     OS/Arch:      linux/arm
     Experimental: false
    
    pi@pi1:~ $ sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    b034de4de339        hello-world         "/hello"            22 months ago       Exited (0) 22 months ago                       peaceful_volhard
    6a23fb2e9f9a        hello-world         "/hello"            22 months ago       Created                                        silly_panini