K8S+DevOps Architect Practical Course | Understanding docker

Video source: Station B "Docker&k8s Tutorial Ceiling, Absolutely the best one taught by Station B, this set of learning k8s to get all the core knowledge of Docker is here"

Organize the teacher's course content and test notes while studying, and share them with everyone. Any infringement will be deleted. Thank you for your support!

Attach a summary post: K8S+DevOps Architect Practical Course | Summary


how did it appear

  • Provide lightweight and efficient virtualization capabilities

Docker company is located in San Francisco, formerly known as dotCloud, the underlying layer uses the Linux container technology (LXC) (in the operating system to achieve resource isolation and

limit). In order to facilitate the creation and management of these containers, dotCloud developed a set of internal tools, which were later named "Docker". Docker just

This is how it was born.

(Think why use Linux container technology?)

Hypervisor: An intermediate software layer that runs between the underlying physical server and the operating system, allowing multiple operating systems and applications to share hardware. Common VMware's Workstation, ESXi, Microsoft's Hyper-V or Citrix's XenServer.

Container Runtime: Manage multiple containers through the virtualization capability of the Linux kernel, and multiple containers share a set of operating system kernels. Therefore, the space occupied by the kernel and the time required for running are removed, making the container extremely lightweight and fast.

  • Environmental dependencies during software delivery

a few knowledge points

  • It is possible to package the application code and operating dependent environment into a mirror, as a delivery medium, and deploy it in each environment
  • You can start the image (image) into a container (container), and provide multi-container life cycle management (start, stop, delete)
  • Containers are isolated from each other, and resource limits can be set for each container
  • Provide lightweight virtualization function, the container is a virtual space in the host, isolated from each other, completely independent
  • CS architecture software products

version management

  • There are two main versions of the Docker engine: Enterprise Edition (EE) and Community Edition (CE)
  • Every quarter (1-3, 4-6, 7-9, 10-12), the Enterprise Edition and Community Edition will release a stable version (Stable). The community version will provide 4 months of support, while the enterprise version will provide 12 months of support
  • Every month, the community version will also release the monthly version through Edge
  • Starting in the first quarter of 2017, Docker version numbers follow the YY.MM-xx format, similar to projects like Ubuntu. For example, the first community release in June 2018 was 18.06.0-ce

History

It was established in 2013 and started in 2015, ushering in rapid development.

Before Docker 1.8, LXC was used, and Docker encapsulated it on the upper layer, simplifying the complicated way of creating and using LXC containers into its own set of command systems.

Later, in order to achieve complex scenarios such as cross-platform, Docker extracted the libcontainer project, encapsulated the operations on namespace and cgroup in the libcontainer project, and supported different platform types.

In June 2015, Docker led the establishment of the OCI (Open Container Initiative) organization, which aims to establish a common standard around containers. The container format standard is a protocol that is not bound by the upper layer structure, that is, it is not limited to a specific operating system, hardware, CPU architecture, public cloud, etc., allowing anyone to develop application container technology in compliance with the standard, which makes Container technology has a broader space for development.

After the establishment of OCI, libcontainer was handed over to the OCI organization for maintenance, but libcontainer only contains libraries that interact with the kernel, so based on the libcontainer project, a CLI tool was added later, and the project was renamed runC (
https://github.com /opencontainers/runc ), currently runC has become a powerful runtime tool.

Docker has also made architectural adjustments. The program related to the container runtime is separated from the docker daemon to form containerd. Containerd provides a gRPC interface for Docker Daemon upwards, so that Docker Daemon can shield the underlying structural changes and ensure that the original interface is backward compatible. Combined with runC through containerd-shim, the engine can be upgraded independently, avoiding the problem that all containers are unavailable due to the previous Docker Daemon upgrade.

That is to say

  • runC (libcontainer) is an implementation that complies with the OCI standard and interacts with the underlying system
  • containerd implements the advanced functions of the container above OCI, such as image management, container execution calls, etc.
  • Dockerd is currently the topmost process that interacts with the CLI, receiving requests from the cli and cooperating with containerd

summary

  1. In order to solve the environmental dependencies in the software delivery process and provide a more lightweight virtualization technology, Docker emerged
  2. Docker is a CS-based software product that can package code and dependencies into images as a delivery medium, and start the images into containers to provide container lifecycle management
  3. docker-ce releases stable versions quarterly. 18.06, 18.09, 19.03
  4. So far, docker has split the original project by formulating the OCI standard, among which runC and containerd are the core projects of docker. Understanding the entire request process of docker is of great help to us in-depth understanding of docker

Guess you like

Origin blog.csdn.net/guolianggsta/article/details/131150154