- Getting Started with Kubernetes(Second Edition)
- Jonathan Baier
- 438字
- 2021-07-02 22:51:21
What is a container?
At the core of container technology are control groups (cgroups) and namespaces. Additionally, Docker uses union filesystems for added benefits to the container development process.
Cgroups work by allowing the host to share and also limit the resources each process or container can consume. This is important for both, resource utilization and security, as it prevents denial-of-service attacks on the host's hardware resources. Several containers can share CPU and memory while staying within the predefined constraints.
Namespaces offer another form of isolation for process interaction within operating systems. Namespaces limit the visibility a process has on other processes, networking, filesystems, and user ID components. Container processes are limited to see only what is in the same namespace. Processes from containers or the host processes are not directly accessible from within this container process. Additionally, Docker gives each container its own networking stack that protects the sockets and interfaces in a similar fashion.

Union filesystems are also a key advantage of using Docker containers. Containers run from an image. Much like an image in the VM or Cloud world, it represents state at a particular point in time. Container images snapshot the filesystem, but tend to be much smaller than a VM. The container shares the host kernel and generally runs a much smaller set of processes, so the filesystem and boot strap period tend to be much smaller. Though those constraints are not strictly enforced. Second, the union filesystem allows for efficient storage, download, and execution of these images.
The easiest way to understand union filesystems is to think of them like a layer cake with each layer baked independently. The Linux kernel is our base layer; then, we might add an OS such as Red Hat Linux or Ubuntu. Next, we might add an application such as Nginx or Apache. Every change creates a new layer. Finally, as you make changes and new layers are added, you'll always have a top layer (think frosting) that is a writable layer.

What makes this truly efficient is that Docker caches the layers the first time we build them. So, let's say that we have an image with Ubuntu and then add Apache and build the image. Next, we build MySQL with Ubuntu as the base. The second build will be much faster because the Ubuntu layer is already cached. Essentially, our chocolate and vanilla layers, from the preceding Layered filesystem figure, are already baked. We simply need to bake the pistachio (MySQL) layer, assemble, and add the icing (the writable layer).
- Practical Ansible 2
- Learning Apache Cassandra(Second Edition)
- 機(jī)器自動(dòng)化控制器原理與應(yīng)用
- Troubleshooting OpenVPN
- 電氣控制與PLC技術(shù)應(yīng)用
- 筆記本電腦維修90個(gè)精選實(shí)例
- Hands-On SAS for Data Analysis
- 生成對(duì)抗網(wǎng)絡(luò)項(xiàng)目實(shí)戰(zhàn)
- 計(jì)算智能算法及其生產(chǎn)調(diào)度應(yīng)用
- 基于人工免疫原理的檢測(cè)系統(tǒng)模型及其應(yīng)用
- Kubernetes on AWS
- 單片機(jī)C51應(yīng)用技術(shù)
- Wireshark Revealed:Essential Skills for IT Professionals
- fastText Quick Start Guide
- 網(wǎng)頁(yè)配色萬(wàn)用寶典