Weekend Reading: Containers

2 weeks 5 days ago
by Carlie Fairchild

The software enabling this technology comes in many forms, with Docker as the most popular. The recent rise in popularity of container technology within the data center is a direct result of its portability and ability to isolate working environments, thus limiting its impact and overall footprint to the underlying computing system. To understand the technology completely, you first need to understand the many pieces that make it all possible. Join us this weekend as we learn about Containers.

Before we get started, many ask what the difference is between a container and virtual machines? Editor Petros Koutoupis explains: Both have a specific purpose and place with very little overlap, and one doesn't obsolete the other. A container is meant to be a lightweight environment that you spin up to host one to a few isolated applications at bare-metal performance. You should opt for virtual machines when you want to host an entire operating system or ecosystem or maybe to run applications incompatible with the underlying environment.

Everything You Need to Know about Linux Containers, Part I: Linux Control Groups and Process Isolation

Truth be told, certain software applications in the wild may need to be controlled or limited—at least for the sake of stability and, to some degree, security. Far too often, a bug or just bad code can disrupt an entire machine and potentially cripple an entire ecosystem. Fortunately, a way exists to keep those same applications in check. Control groups (cgroups) is a kernel feature that limits, accounts for and isolates the CPU, memory, disk I/O and network's usage of one or more processes.

Everything You Need to Know about Linux Containers, Part II: Working with Linux Containers (LXC)

Part I of this Deep Dive on containers introduces the idea of kernel control groups, or cgroups, and the way you can isolate, limit and monitor selected userspace applications. Here, I dive a bit deeper and focus on the next step of process isolation—that is, through containers, and more specifically, the Linux Containers (LXC) framework.

Go to Full Article
Carlie Fairchild

Tor Browser for Android (Alpha) Now Available, Feral Interactive Announces Total War: THREE KINGDOMS Coming to Linux Spring 2019, Ubuntu 18.10 Cosmic Cuttlefish Final Beta Released, Four New openSUSE Tumbleweed Snapshots and More

2 weeks 6 days ago

News briefs for September 28, 2018.

The Tor Browser for Android (alpha) is now available. This mobile browser has the "highest privacy protections ever available and is on par with Tor Browser for desktop". You can download the alpha release from Google Play, or you can get the apk directly from here. You also will need Orbot, which is a proxy application to connect the Tor Browser for Android with the Tor network. (When the stable version is released early next year, you won't need to do this.)

In other Tor news, Tor is looking for a software developer for its anti-censorship team. If you're interested, see the Tor Project page for details and how to apply.

Feral Interactive announced that Total War: THREE KINGDOMS is coming to Linux and macOS in spring of 2019, shortly after the Windows release, which is scheduled for March 7, 2019. The game is the first of the Total War series to be set in ancient China. You can view the trailer here.

Ubuntu 18.10 (Cosmic Cuttlefish) final beta has been released. This release includes images not only for Ubuntu Desktop, Server and Cloud, but also for Kubuntu, Lubuntu, Ubuntu Budgie, UbuntuKylin, Ubuntu MATE, Ubuntu Studio and Xubuntu. To upgrade to Ubuntu 18.10 beta from Ubuntu 18.04, go here. See the release notes for more information.

This week brought four new openSUSE Tumbleweed snapshots that update packages like vim, Xen, Git and ImageMagick.

Sailfish 3 is coming soon. According to the Official Jolla Blog, it will be rolled out next month, with early access releases by the end of October. It will include many new features such as VPN improvements and MDM (Mobile Device Management) functionalities.

News Tor Security Android Mobile Distributions openSUSE Sailfish Ubuntu gaming Feral Interactive
Jill Franklin

Understanding Bash: Elements of Programming

2 weeks 6 days ago
by Vladimir Likic

Ever wondered why programming in Bash is so difficult? Bash employs the same constructs as traditional programming languages; however, under the hood, the logic is rather different.

The Bourne-Again SHell (Bash) was developed by the Free Software Foundation (FSF) under the GNU Project, which gives it a somewhat special reputation within the Open Source community. Today, Bash is the default user shell on most Linux installations. Although Bash is just one of several well known UNIX shells, its wide distribution with Linux makes it an important tool to know.

The main purpose of a UNIX shell is to allow users to interact effectively with the system through the command line. A common shell action is to invoke an executable, which in turn causes the kernel to create a new running process. Shells have mechanisms to send the output of one program as input into another and facilities to interact with the filesystem. For example, a user can traverse the filesystem or direct the output of a program to a file.

Although Bash is primarily a command interpreter, it's also a programming language. Bash supports variables, functions and has control flow constructs, such as conditional statements and loops. However, all of this comes with some unusual quirks. This is because Bash attempts to fulfill two roles at the same time: to be a command interpreter and a programming language—and there is tension between the two.

All UNIX shells, including Bash, are primarily command interpreters. This trait has a deep history, stretching all the way to the very first shell and the first UNIX system. Over time, UNIX shells acquired the programming capabilities by evolution, and this has led to some unusual solutions for the programming environment. As many people come to Bash already having some background in traditional programming languages, the unusual perspective that Bash takes with programming constructs is a source of much confusion, as evidenced by many questions posted on Bash forums.

In this article, I discuss how programming constructs in Bash differ from traditional programming languages. For a true understanding of Bash, it's useful to understand how UNIX shells evolved, so I first review the relevant history, and then introduce several Bash features. The majority of this article shows how the unusual aspects of Bash programming originate from the need to blend the command interpreter function seamlessly with the capabilities of a programming language.

Go to Full Article
Vladimir Likic