Английская Википедия:Container Linux

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Short description Шаблон:Use mdy dates Шаблон:Redirect Шаблон:Infobox OS

Container Linux (formerly CoreOS Linux) is a discontinued open-source lightweight operating system based on the Linux kernel and designed for providing infrastructure for clustered deployments while focusing on automation, ease of application deployment, security, reliability, and scalability. As an operating system, Container Linux provided only the minimal functionality required for deploying applications inside software containers, together with built-in mechanisms for service discovery and configuration sharing.[1][2][3][4][5]

Container Linux shares foundations with Gentoo Linux,[6][7] ChromeOS, and ChromiumOS through a common software development kit (SDK). Container Linux adds new functionality and customization to this shared foundation to support server hardware and use cases.[4][8]Шаблон:Rp CoreOS was developed primarily by Alex Polvi, Brandon Philips, and Michael Marineau,[3] with its major features available as a stable release.[9][10][11]

The CoreOS team announced the end-of-life for Container Linux on May 26, 2020,[12] offering Fedora CoreOS,[13] and RHEL CoreOS as its replacement, both based on Red Hat Enterprise Linux.

Шаблон:AnchorOverview

Container Linux provides no package manager as a way for distributing payload applications, requiring instead all applications to run inside their containers. Serving as a single control host, a Container Linux instance uses the underlying operating-system-level virtualization features of the Linux kernel to create and configure multiple containers that perform as isolated Linux systems. That way, resource partitioning between containers is performed through multiple isolated userspace instances, instead of using a hypervisor and providing full-fledged virtual machines. This approach relies on the Linux kernel's cgroups and namespaces functionalities,[14][15] which together provide abilities to limit, account and isolate resource usage (CPU, memory, disk I/O, etc.) for the collections of userspace processes.[2][5][16]

Initially, Container Linux exclusively used Docker as a component providing an additional layer of abstraction and interface[17] to the operating-system-level virtualization features of the Linux kernel, as well as providing a standardized format for containers that allows applications to run in different environments.[2][16] In December 2014, CoreOS released and started to support rkt (initially released as Rocket) as an alternative to Docker, providing through it another standardized format of the application-container images, the related definition of the container runtime environment, and a protocol for discovering and retrieving container images.[18][19][20][21] CoreOS provides rkt as an implementation of the so-called app container (appc) specification that describes the required properties of the application container image (ACI). CoreOS created appc and ACI as an independent committee-steered set of specifications[22][23] aimed to become part of the vendor- and operating-system-independent Open Container Initiative, or OCI, initially named the Open Container Project (OCP) containerization standard,[24] which was announcedШаблон:By whom in June 2015.[25][26][27]

Container Linux uses ebuild scripts from Gentoo Linux for automated compilation of its system components,[6][7] and uses systemd as its primary init system, with tight integration between systemd and various Container Linux's internal mechanisms.[2][28]

Шаблон:AnchorUpdates distribution

Container Linux achieves additional security and reliability of its operating system updates by employing FastPatch as a dual-partition scheme for the read-only part of its installation, meaning that the updates are performed as a whole and installed onto a passive secondary boot partition that becomes active upon a reboot or kexec. This approach avoids possible issues arising from updating only certain parts of the operating system, ensures easy rollbacks to a known-to-be-stable version of the operating system, and allows each boot partition to be signed for additional security.[2][5][29] The root partition and its root file system are automatically resized to fill all available disk-space upon reboots; while the root partition provides read-write storage space, the operating system itself is mounted read-only under Шаблон:Mono.[30][31][32]

To ensure that only a certain part of the cluster reboots at once when the operating system updates are applied, preserving the resources required for running deployed applications, CoreOS provides locksmith as a reboot manager for Container Linux.[33] Using locksmith, one can select between different update strategies that are determined by how the reboots are performed as the last step in applying updates; for example, one can configure how many cluster members are allowed to reboot simultaneously. Internally, locksmith operates as the Шаблон:Mono daemon that runs on cluster members, while the Шаблон:Mono command-line utility manages configuration parameters.[34][35] Locksmith is written in the Go language and distributed under the terms of the Apache License 2.0.[36]

The updates distribution system employed by Container Linux is based on Google's open-source Omaha project, which provides a mechanism for rolling out updates and the underlying request–response protocol based on XML.[37][38][39] Additionally, CoreOS provides CoreUpdate as a web-based dashboard for the management of cluster-wide updates. Operations available through CoreUpdate include assigning cluster members to different groups that share customized update policies, reviewing cluster-wide breakdowns of Container Linux versions, stopping and restarting updates, and reviewing recorded update logs. CoreUpdate also provides an HTTP-based API that allows its integration into third-party utilities or deployment systems.[29][40][41]

Шаблон:AnchorCluster infrastructure

Файл:CoreOS Architecture Diagram.svg
A high-level illustration of the CoreOS cluster architecture[42]

Container Linux provides etcd, a daemon that runs across all computers in a cluster and provides a dynamic configuration registry, allowing various configuration data to be easily and reliably shared between the cluster members.[37][30] Since the key–value data stored within Шаблон:Mono is automatically distributed and replicated with automated master election and consensus establishment using the Raft algorithm, all changes in stored data are reflected across the entire cluster, while the achieved redundancy prevents failures of single cluster members from causing data loss.[21][43] Beside the configuration management, Шаблон:Mono also provides service discovery by allowing deployed applications to announce themselves and the services they offer. Communication with Шаблон:Mono is performed through an exposed REST-based API, which internally uses JSON on top of HTTP; the API may be used directly (through Шаблон:Mono or Шаблон:Mono, for example), or indirectly through Шаблон:Mono, which is a specialized command-line utility also supplied by CoreOS.[2][5][44][45][46] etcd is also used in Kubernetes software.

Container Linux also provides the Шаблон:Mono cluster manager, which controls Container Linux's separate systemd instances at the cluster level. As of 2017, "fleet" is no longer actively developed and is deprecated in favor of Kubernetes.[47] By using Шаблон:Mono, Container Linux creates a distributed init system that ties together separate systemd instances and a cluster-wide Шаблон:Mono deployment;[43] internally, Шаблон:Mono daemon communicates with local Шаблон:Mono instances over D-Bus, and with the Шаблон:Mono deployment through its exposed API. Using Шаблон:Mono allows the deployment of single or multiple containers cluster-wide, with more advanced options including redundancy, failover, deployment to specific cluster members, dependencies between containers, and grouped deployment of containers. A command-line utility called Шаблон:Mono is used to configure and monitor this distributed init system;[48] internally, it communicates with the Шаблон:Mono daemon using a JSON-based API on top of HTTP, which may also be used directly. When used locally on a cluster member, Шаблон:Mono communicates with the local Шаблон:Mono instance over a Unix domain socket; when used from an external host, SSH tunneling is used with authentication provided through public SSH keys.[49][50][51][52][53]

All of the above-mentioned daemons and command-line utilities (Шаблон:Mono, Шаблон:Mono, Шаблон:Mono and Шаблон:Mono) are written in the Go language and distributed under the terms of the Apache License 2.0.[54][55]

Шаблон:AnchorDeployment

When running on dedicated hardware, Container Linux can be either permanently installed on local storage, such as a hard disk drive (HDD) or solid-state drive (SSD),[56] or booted remotely over a network using Preboot Execution Environment (PXE) in general, or iPXE as one of its implementations.[57][58] CoreOS also supports deployments on various hardware virtualization platforms, including Amazon EC2, DigitalOcean, Google Compute Engine, Microsoft Azure, OpenStack, QEMU/KVM, Vagrant and VMware.[5][59][60][61] Container Linux may also be installed on Citrix XenServer, noting that a "template" for CoreOS exists.

Container Linux can also be deployed through its commercial distribution called Tectonic, which additionally integrates Google's Kubernetes as a cluster management utility. Шаблон:As of, Tectonic is planned to be offered as beta software to select customers.[22][62][63] Furthermore, CoreOS provides Flannel as a component, implementing an overlay network required primarily for the integration with Kubernetes.[22][64][65]

Шаблон:As of, Container Linux supports only the x86-64 architecture.[37]

Шаблон:AnchorDerivatives

Following its acquisition of CoreOS, Inc.[66] in January 2018, Red Hat announced[67] that it would be merging CoreOS Container Linux with Red Hat's Project Atomic to create a new operating system, Red Hat CoreOS, while aligning the upstream Fedora Project open source community around Fedora CoreOS, combining technologies from both predecessors.

On March 6, 2018, Kinvolk GmbH announced[68] Flatcar Container Linux, a derivative of CoreOS Container Linux. This tracks the upstream CoreOS alpha, beta, and stable channel releases, with an experimental Edge release channel added in May 2019.[69]

Reception

LWN.net reviewed CoreOS in 2014:[70] Шаблон:Quote

See also

Шаблон:Portal

References

Шаблон:Reflist

External links

Шаблон:Commons category

Шаблон:Virtualization software Шаблон:Linux Шаблон:Linux kernel Шаблон:Linux containers

  1. Шаблон:Cite web
  2. 2,0 2,1 2,2 2,3 2,4 2,5 Шаблон:Cite web
  3. 3,0 3,1 Шаблон:Cite magazine
  4. 4,0 4,1 Шаблон:Cite web
  5. 5,0 5,1 5,2 5,3 5,4 Шаблон:Cite web
  6. 6,0 6,1 Шаблон:Cite web
  7. 7,0 7,1 Шаблон:Cite web
  8. Шаблон:Cite web
  9. Шаблон:Cite web
  10. Шаблон:Cite web
  11. Шаблон:Cite web
  12. Ошибка цитирования Неверный тег <ref>; для сносок eol не указан текст
  13. Шаблон:Cite web
  14. Шаблон:Cite web
  15. Шаблон:Cite web
  16. 16,0 16,1 Шаблон:Cite web
  17. Шаблон:Cite web
  18. Шаблон:Cite web
  19. Шаблон:Cite web
  20. Шаблон:Cite web
  21. 21,0 21,1 Шаблон:Cite web
  22. 22,0 22,1 22,2 Шаблон:Cite web
  23. Шаблон:Cite web
  24. Шаблон:Cite news
  25. Шаблон:Cite news
  26. Шаблон:Cite web
  27. Шаблон:Cite web
  28. Шаблон:Cite web
  29. 29,0 29,1 Шаблон:Cite web
  30. 30,0 30,1 Шаблон:Cite web
  31. Шаблон:Cite web
  32. Шаблон:Cite web
  33. Шаблон:Cite web
  34. Шаблон:Cite web
  35. Шаблон:Cite web
  36. Шаблон:Cite web
  37. 37,0 37,1 37,2 Шаблон:Cite web
  38. Шаблон:Cite web
  39. Шаблон:Cite web
  40. Шаблон:Cite web
  41. Шаблон:Cite web
  42. Шаблон:Cite web
  43. 43,0 43,1 Шаблон:Cite web
  44. Шаблон:Cite web
  45. Шаблон:Cite web
  46. Шаблон:Cite web
  47. Шаблон:Cite web
  48. Шаблон:Cite web
  49. Шаблон:Cite web
  50. Шаблон:Cite web
  51. Шаблон:Cite web
  52. Шаблон:Cite web
  53. Шаблон:Cite web
  54. Ошибка цитирования Неверный тег <ref>; для сносок license-etcd не указан текст
  55. Шаблон:Cite web
  56. Шаблон:Cite web
  57. Шаблон:Cite web
  58. Шаблон:Cite web
  59. Шаблон:Cite web
  60. Шаблон:Cite web
  61. Шаблон:Cite web
  62. Шаблон:Cite news
  63. Шаблон:Cite magazine
  64. Шаблон:Cite web
  65. Шаблон:Cite web
  66. Шаблон:Cite web
  67. Шаблон:Cite web
  68. Шаблон:Cite web
  69. Шаблон:Cite web
  70. CoreOS: A different kind of Linux distribution [LWN.net]