(This is a guest post by Aqua Security.)
Container technology provides a standardized way to package applications with everything needed to run them, including libraries, binaries, runtime, and code.
There is a lot of hype about containers at the moment because of how they reduce conflict between developers, sysadmins, and testers in relation to applications behaving differently on different systems. For example, a certain application feature might work fine on a developer’s computer, but a sysadmin might find that the same feature doesn’t work as intended on his/her computer. This leads to conflict: the developer blames the sysadmin’s computer for the malfunctioning feature while the sysadmin blames the developer for faulty code.
Because container technology isolates apps from underlying resources, no more conflict arises around the underlying computing infrastructure. The result of such a reduction in conflict is faster building, shipment, and deployment of software, which is vital in an agile development landscape.
The container hype is real. Some of the recent stats on containers are indicative of the huge hype around this technology:
With that said, a debate still rages over whether enterprises should use containers or virtual machines (VMs). The prevailing wisdom suggests the decision comes down to scope: enterprises should use containers for running multiple versions of a single service, while VMs are more suitable for running many different applications with a wide variety of operating systems.
VMs abstract applications from their environments, but they utilize what’s known as a hypervisor layer to do this, as opposed to containers, which interact with the kernel of the host OS using platforms such as Docker. Virtual machines are typically applications coupled with a guest OS, together running on top of the hypervisor layer.
As background, Aqua Security has developed a container technology wiki. The wiki was created to bring some depth and clarity to this debate. Our wiki brings together thousands of resources about containers, including conceptual articles, best practices, and how-to guides. You can find more than 200 sub-topics on containers, container platforms, and container orchestration. Following a landscape review, it became clear that Vizuri is one of the major players in this space—and we chose to feature several of their resources.
We’ll note that we delve into both Docker and Kubernetes, which are used to run containerized apps and orchestrate them. You may also be interested in a section on container security, which is a key concern for any organization considering the use of containers.
Container technology is a complex topic that requires a lot of research before deciding whether to use it. The remainder of this article collates seven of the best container resources from around the web that you should consider reading to broaden your knowledge of containers.
1. Docker Tutorial: Services
By far the most popular platform for running apps within containers, it’s highly likely you’ll need to become familiar with Docker concepts if you want to use containers. This tutorial shows you how to take some containers that you’ve built and use them in production using a special file named docker-compose.yml.
Each container deployed in production is known as a service, and the Docker compose file specifies parameters for running the service, including how many replicas of a service to run and what the CPU and RAM limits should be for the service.
2. LearnCode.academy Docker Video Tutorial
While written explanations on containers are helpful, video tutorials are also a great way to learn how to use any new technology. This eleven-minute video by LearnCode.academy covers how to build a Docker container, including steps such as setting up boot2docker on your machine, and the building deployment of your first Docker webapp.
3. Vizuri: Deploying a Simple Windows Container in Azure
Vizuri’s 2017 post describes how to deploy a simple Windows container in Microsoft Azure. The possibility of this emerged as a result of the release of Windows Server 2016 when Microsoft has expanded its integration with Docker to include running Docker Windows Containers.
4. TutorialsPoint Docker Tutorial
This useful resource by TutorialsPoint provides an in-depth Docker tutorial that begins with the basics of the platform before moving on to more advanced topics, including Docker networking and registries. There’s useful information for people of all levels of familiarity with Docker here, from beginners to advanced users.
5. Vizuri: Dockerize SQL
This post by Vizuri goes through the steps required to run a Microsoft SQL container which runs on a Windows 2016 server instance on the Microsoft Azure cloud. First, you log in to the Azure portal and launch a Windows 2016 server instance before pulling down the mssql-server container image by running a docker pull command.
The remainder of the post describes how to connect to the SQL instance properly. After completing this guide, you’ll be ready to add a test database to check everything is working as it should.
6. Hackernoon Docker Tutorial
This Docker tutorial by Hackernoon focuses on getting started with Python, Redis, and Nginx in Docker. The article overviews the basics of containerization and the problems it solves, before going through the steps required to build a Dockerfile and then an application image which can be used to run a container in Docker. The article covers popular use cases in the form of building an image of the Nginx web server and connecting two containers built on Redis and Python images.
7. Vizuri: Docker for Windows vs On Windows Server
Lastly, Vizuri posted this useful resource to help clarify the differences between running Docker on Windows servers and running Docker for Windows and some typical use cases. Docker ON Windows Server is a way to run Docker on a Windows Server without any Linux components, solely using Windows-based containers. Docker FOR Windows uses a Linux component for the Docker daemon and runs Linux-based containers
Container technology provides many benefits to companies that utilize it. At the employee level, the technology reduces conflict in development teams and allows them to develop, test, and deploy apps much faster. At the company level, containers can improve profitability by ensuring companies get the most out of their IT investments, allowing more applications to run on existing infrastructure.
Go through these resources to improve your container knowledge and ensure your company is ready for any move towards using containers.