The Grace Hopper Celebration of Women in Computing (GHC) is a series of conferences designed to bring the research and career interests of women in computing to the forefront. It is the world’s largest gathering of women in computing. The celebration, named after computer scientist Grace Hopper, is organized every year by the Anita Borg Institute for Women and Technology and the Association for Computing Machinery.
This year, the conference took place in Bangalore International Exhibition Center( the third consecutive year at this venue) from November 6-8, 2019. The conference accommodated around 5000+ attendees. It was a combination of technical sessions and workshops. It included career sessions, expos, poster session, career fair, awards ceremony, and much more.
What’s Pico all about??
Pico is an open source project which helps in implementing object detection & analytics(Deep Learning) using Docker on IoT devices like Raspberry Pi & Jetson Nano in just simple 3 steps. Imagine you are able to capture live video streams, identify objects using deep learning, and then trigger actions or notifications based on the identified objects – all using Docker containers. With Pico, you will be able to setup and run a live video capture, analysis, and alerting solution prototype. A camera surveils a particular area, streaming video over the network to a video capture client. The client samples video frames and sends them over to AWS, where they are analyzed and stored along with metadata. If certain objects are detected in the analyzed video frames, SMS alerts are sent out. Once a person receives an SMS alert, they will likely want to know what caused it. For that, sampled video frames can be monitored with low latency using a web-based user interface.
The Pico framework uses Kafka cluster to acquire data in real-time. Kafka is a message-based distributed publish-subscribe system, which has the advantages of high throughput and perfect fault-tolerant mechanism. The type of data source is the video that generated by the cameras attached to Raspberry Pi.
This year I submitted proposal for workshop on Pico during June-July along with 3 other DellEMC Engineers. The submission was selected for GHCI conference during the initial week of August 2019. This was our first workshop submission and we were super happy about the news. We confirmed our participation during the early week for September. There were multiple submissions for final Program Material during 2nd week of September. The final Program Materials was submitted on Linklings. This included the profiles and headshots of all the speakers in the session.
During the mid-September, I started building workshop material for Pico. The workshop consisted of 4 separate modules:
The workshop was scheduled on 8th November and around 80+ attendees attended this workshop. Over 8 Raspberry Pis were arranged per table and it helped attendees to try out CLIs to install Docker on Raspberry Pi. Apache Kafka was pre-installed on AWS Cloud along with Image Processor and consumer scripts. I showcased a LIVE demo where camera module attached to Raspberry Pi was able to detect the audience as “Boxes of People”.
Overall, it was an amazing experience being part of GHCI and running workshop for such a huge audience. It was great to receive loads of positive feedback from the organizers too. Representing DellEMC in such a BIG conference made us feel proud and we went back home collecting lots of appreciation to prepare ourself for the forthcoming events in the near future.
Thanks to Prashant Ksr, Priti Parate & Varalakshmi for all the support for making this happen. Thanks to GHCI organizer for this opportunity and believing on this promising project work. Thank you.
Want to learn more about Pico?
Head over to https://github.com/collabnix/pico
If you want to collaborate around Pico project, visit https://dockerlabs.collabnix.com and join 1600+ community Slack members to discuss further. Looking forward to see you there.
Docker is officially supported both on Raspberry Pi 3 and 4. Installing Docker is just a matter of single-liner command. All you need to do is a simple curl command:
curl -sSL https://get.docker.com/ | sh
to get Docker binaries installed flawlessly. Isn’t it damn simple?
Raspbian is a free operating system based on Debian optimized for the Raspberry Pi hardware. An operating system is the set of basic programs and utilities that make your Raspberry Pi run. However, Raspbian provides more than a pure OS: it comes with over 35,000 packages, pre-compiled software bundled in a nice format for easy installation on your Raspberry Pi.
Docker today support the latest Raspbian Buster release. If you really want to play around with stable release of Docker for Raspbian Buster, then head over to this link.
Under this blog post, I will showcase how to install latest Docker Engine 19.03.1 on Raspbian OS Buster release flawlessly.
If you are in Mac, you might need to install Etcher tool. If on Windows, install SDFormatter to format SD card as well as Win32installer to flash Raspbian ISO image onto the SD card. You will need SD card reader to achieve this.
Booting up Raspbian OS
Just use the same charger which you use for your mobile to power on Raspberry Pi box. Connect HDMI port to your TV or display. Let it boot up.
The default username is pi and password is raspberry.
Enable SSH to perform remote login
To login via your laptop, you need to allow SSH service running. You can verify IP address command via ifconfig command.
[Captains-Bay]🚩 > ssh email@example.com
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l
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.
Last login: Tue Feb 26 12:30:00 2019 from 192.168.1.4
pi@raspberrypi:~ $ sudo su
Its a single liner command. -L means location, -s means silent and -S means show error.
root@raspberrypi:~# curl -sSL https://get.docker.com/ | sh
Deploying Nginx App
root@raspberrypi:~# docker run -d -p 80:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
9c38b5a8a4d5: Pull complete
1c9b1b3e1e0d: Pull complete
258951b5612f: Pull complete
Status: Downloaded newer image for nginx:latest
root@raspberrypi:~# curl localhost:80
<title>Welcome to nginx!</title>
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
Commercial support is available at
<p><em>Thank you for using nginx.</em></p>
root@raspberrypi:~# docker info
Server Version: 19.03.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Default Runtime: runc
Init Binary: docker-init
containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
runc version: 09c8266bf2fcf9519a651b04ae54c967b9ab86ec
init version: fec3683
Kernel Version: 4.14.98-v7+
Operating System: Raspbian GNU/Linux 9 (stretch)
Total Memory: 927.2MiB
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Live Restore Enabled: false
Product License: Community Engine
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No oom kill disable support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
Raspberry Pi 3 Model B is the first 64 bit version and the third generation Pi box which runs on 1.2GHz 64 bit quad-core ARMv8 CPU.(Broadcom BCM2837 A53 ARM processor). Despite its processor upgrade, there wasn’t an official 64-bit OS available for it till the first week of Jan 2017. Kudos to SUSE Team, they came up providing first commercial enterprise Linux distribution optimized for ARM AARCH64 servers. This is definitely a BIG news. Reason – To build a solution to meet specific market needs while maintaining a common code base. Enterprise vendors & customers demanding workload-optimized server platforms can now radically expand it for their modern data centers.
In the last couple of months, Docker enthusiasts have been working hard to get Docker running on ARM 32bit systems (like Raspberry Pi). With Docker Engine 1.12.1, a FIRST ARM Debian package was officially made available by Docker Inc. which happened late last year. This year, SUSE Team did a great job in bringing capabilities of SUSE Linux(a.k.a SLES for ARM) to the ARM AArch64 hardware platform. This is BIG news for Docker community too as more innovation and development is expected to grow building containers which will run across the AARCH64 platform.
Under this blog, I am going to test drive Docker 1.12.3 on first 64-bit ARM Open SUSE distribution running on Raspberry Pi 3 box.
Raspberry Pi 3 ( You can order it from Amazon in case you are in India for $35)
Rufus(in case you have Windows OS running on your laptop) – to burn OpenSUSE Leap 42.2 ARM XZ format directly into microSD card.(No need to extract XZ using any tool)
Format the microSD card using SD Formatter as shown below:
2. Download OpenSUSE Leap 42.2 ARM OS from here and use Win32 imager(in case you are on Windows OS running on your laptop) to burn it on microSD card.
3. Insert the microSD card into your Pi box. Now connect the HDMI cable from one end of Pi’s HDMI slot to your TV or display unit and mobile charger(recommended 5.1V@1.5A) as shown:
4.You will see the fancy GUI coming up on your display:
5. To enable VNC, run the below command:
linux:~ # zypper install xorg-x11-Xvnc
Installing Docker 1.12.3 on first 64-bit ARM OpenSUSE
6. Run the below command:
$curl -sSLk https://get.docker.com/ | sh
7. Verify the docker version:
8. Let us try searching for Docker images present in Dockerhub based on aarch64:
Please be aware that the usual Docker containers are not going to work for this architecture. You need to pick up AARCH64 bit Docker images to run containers.
linux:~ # docker run busybox
Unable to find image ‘busybox:latest’ locally
latest: Pulling from library/busybox
557a0c95bfcd: Pull complete
Status: Downloaded newer image for busybox:latest
panic: standard_init_linux.go:175: exec user process caused “exec format error” [recovered]
panic: standard_init_linux.go:175: exec user process caused “exec format error”
goroutine 1 [running, locked to thread]:
Installing Docker 1.13 on 64-bit ARM OS:
Docker doesn’t officially support AARCH64 system. You can’t use one-liner command to install Engine 1.13 as shown below:
If you really want to try 1.13, the easier way is downloading it from the below link:
linux:~ # zypper install python-pip
linux:~ # pip install docker-compose
Tested docker-compose v2.0 functionality by bringing up microservices and it went fine.
Testing Swarm Mode:
linux:~/collabnix # docker service ls
ID NAME REPLICAS IMAGE COMMAND
0x7dlmr4pjm7 backend-db 1/1 aarch64/redis
linux:~/collabnix # docker service ps backend-db
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
7jmkwcbzq8wix3umfkcqc92rw backend-db.1 aarch64/redis linux Running Preparing about a minute ago