Containers-What are they?

First, let’s begin with what containers are.  There are a number of mature container technologies in use today, but Docker has been the long time leader.  To many, the name “Docker” is synonymous with “container,” so looking at their explanation would be a good idea.

“A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.”

 

containerized-applicationsvirtual machines - containers

 

Even among IT professionals, there seems to be some confusion for people who haven’t actually used this technology.  Most of us have heard of containers. We may have them powering applications in the workplace, yet still don’t really understand them.  People that have mostly wrapped their heads around what virtual machines are, might still have trouble understanding container technology.

 

A Portable Application

Virtual machines run on virtualized hardware, which can cause a pretty significant performance hit for RAM/CPU/Disk/ and other virtualized resources.  An operating system needs to be installed on the virtual machine. This can take up a large amount of disk space and system resources used by the operating system.  This adds up quickly, especially with a lot of virtual machines.

Operating systems also need to boot up before they can run applications.  This can introduce quite a bit of delay.  Containers simply put just run applications on a virtual operating system.  They don’t need to boot up, and can be spun up in seconds.

This still may be about as clear as mud for some, so I’ll break this down to a very basic level.  A container is just a portable application.  That might be a bit basic of an explanation, but it is still pretty accurate in my opinion.

 

A different use case for containers

Designing microservices, that run on multiple clouds, at scale, and orchestrated by something like Kubernetes is outside the scope of what I’d like to cover in a blog post.  There is also a lot of material out there on this topic.  Instead, I’ll propose a more obscure use case – running legacy software.

 

Legacy System

 

It isn’t pretty, but the reality is that sometimes legacy systems are still a thing.  Some easy examples to pick on are legacy PBX(phone system) applications or building control applications.  Those don’t normally generate revenue, but losing control of your phone system or HVAC system could definitely be an issue.

A more extreme example would be revenue generating, line of business applications that just have no suitable replacement.  Maybe there is a suitable replacement, but the cost is just too prohibitively expensive when your old system still works great.  Perhaps there are licensing cost changes, or having to buy large quantities of new IP phones to run on a modern PBX just isn’t in the budget.  Some of these just cannot run on anything past End Of Life Windows versions such as Windows 2003, 2000, or even NT(YIKES!!!).  The software vendor that designed these might have gone out of business, and these systems just never got around to being replaced because they just work and generate revenue.

 

WINE in a Linux container

Among many other problems, running end of life software, on end of life operating systems, is a HUGE security issue.  It is difficult, if not impossible to prevent an attack using known exploits that are simply un-patchable.

What is a better way?  You can run Windows applications using WINE (originally a backronym for “Wine Is Not an Emulator”), in a Linux container!  This solves a lot of security issues related to the operating system.  The “What happens if my 15 year old server dies?” also is solved.  If you really wanted to, you could even put that antiquated application in the cloud.

Configuring WINE is also out of scope for what I’d like to cover in this post, but there is plenty information out there.  Rather than pick on out of business software vendors, I “containerized” a few Windows applications that are freely available which I have actually encountered being used for actual business use.  We can just pretend that they are no longer supported, and have no suitable replacement for demo purposes.

 

These applications are:

PingInfoView  (a ping monitoring tool)

 

notepad++ (a text editor used by some systems/network/software engineers)

 

To tie it all together visually, here is a screenshot demonstrating these running on my CentOS Linux laptop:

 

 

To demonstrate that these are actually running as containers, please take notice of the container ID listed at the top of the application window(8b5f36fff598 and 5cd664be8a7b).  These are listed in the output of “docker ps” and shown in the filtered output of the Linux process monitor “top.”  These could be easily moved to another machine running different distribution of Linux, and perhaps into a random server on your favorite cloud host.

I hope you enjoyed this example of a fun, not so common container use case.  Need help designing your infrastructure to power your applications?  The friendly engineers at Zunesis have the expertise to help.  Contact us today!

What is Linux?

 

 

Strictly speaking, Linux is the kernel, or core of Linux distributions.  I like to think of the Linux kernel like the base plate for Legos. It’s where all other pieces attach to.

 

 

A distribution, or “distro” for short, is a complete operating system including a kernel, packages, package managers, and everything else needed.  In other words, distros are pre-assembled building block sets depending on user preference and needs.  Red Hat, SUSE, and Ubuntu are examples of some of the more popular distros.  There are too many others to list here, but here are some resources to give you an idea.

 

 

Resource One

Resource Two

 

 

Linux Use Cases

 

 

As a long time Linux user, I can understand why it didn’t take off as a general purpose operating system like MS Windows.  There are just too many choices, differences between those choices, and perceived lack of standardization.  There’s also the reputation of being difficult to use. Why then would anyone want to use Linux, instead of Microsoft Windows or Mac OS X for example?  Like the number of distros, the number of Linux use cases is also very extensive, so I’ll cover just a few popular ones.

 

 

Linux Operating Systems

 

 

IoT

 

 

Open source software is typically free, though some commercially backed distros such as RHEL do charge subscription fees.  Linux runs on many different types of hardware such as IoT devices, personal computers, networking equipment, load balancers, supercomputers, and just about anything it seems. It can run on very low end or less common hardware.  This makes it perfect for IoT devices, where processing power may be limited, and cost needs to be kept down.

 

 

 

“The Cloud”

 

 

It also powers very high end hardware, including much of what powers “the cloud.”  Servers powering the internet need a reliable operating system that can run continuously without downtime, while maintaining a high level of security.  There are far fewer circumstances in which Linux based OSes require a reboot.

 

 

Though I wouldn’t recommend it for most use cases, it is certainly possible for Linux devices to run continuously for YEARS without a reboot.  It is also much easier to avoid viruses and malware.  This is great for web servers, databases, load balancers, routers, switches, firewalls, storage servers, virtual machine hypervisors, and many other pieces of critical IT infrastructure.

 

 

Containers

 

 

The trend to “containerize” everything has taken the world by storm.  Though MS Windows containers are now an option, until recently Linux was your only option.  It is a much more mature platform for containers.  There is much better documentation and support for containers on Linux.  It is much lighter weight which allows for much denser deployments, as well as portability.

 

 

One example of a popular container OS is Alpine Linux .  ” It is built around musl libc and busybox. This makes it smaller and more resource efficient than traditional GNU/Linux distributions. A container requires no more than 8 MB and a minimal installation to disk requires around 130 MB of storage. Not only do you get a fully-fledged Linux environment but a large selection of packages from the repository.”

 

 

AI

 

 

AI, machine learning, and deep learning are also getting a lot of attention these days.  Linux offers a number of advantages in this space, including better integration with containers.  There are many examples and lots of documentation to help someone building an AI project on Ubuntu for example.

 

 

Want to train your model in the cloud, but deploy at the edge to a low powered IoT device and/or container?  You will likely have a much easier time, along with better and more predictable results on Linux.

 

 

If you are considering an IoT or AI project, and/or the infrastructure required to support it, Zunesis has the expertise. Schedule an assessment today, we’d love to help!

 

 

GET IN TOUCH

EMAIL: info@zunesis.com

  

CORPORATE OFFICE

Zunesis, Inc.
4B Inverness Ct E Suite 100,
Englewood, CO 80112
(720) 221-5200

Las Vegas
6671 Las Vegas Blvd S
Building D Suite 210, Office 260
Las Vegas, NV 89119
(702) 837-5300

Copyright © 2023 Zunesis. All Rights Reserved. | Website Developed & Managed by C. CREATIVE, LLC