Container Linux: Difference between revisions

Content deleted Content added
top: CoreOS v275.0.0, infobox updated
No edit summary
Tag: Reverted
(410 intermediate revisions by more than 100 users not shown)
Line 1:
{{short description|Linux distribution}}
{{Use mdy dates|date=August 2014}}
{{Redirect|CoreOS|its successor, Fedora CoreOS|Fedora Linux}}
{{Infobox OS
| name = Container = CoreOSLinux
| logo = Coreos-wordmark-horiz-colorContainer_Linux_Logo.png
| logo size = 220px
| logo_size = 200px
| logo caption =
| screenshot =
| logo alt = Container Linux logo
| caption =
| screenshot =
| developer =
| caption =
| source_model = [[Open source]]
| developer = CoreOS team, [[Red Hat]]
| kernel_type = [[Monolithic kernel|Monolithic]] ([[Linux kernel]])
| source model = [[Open-source software|Open source]]
| supported_platforms =
| kernel type = [[Monolithic kernel|Monolithic]] ([[Linux kernel]])
| ui =
| supported platforms = [[x86-64]]<ref name="theplatform-201502" />
| family = [[Unix-like]]
| ui =
| released =
| family = [[Linux]] (based on [[Gentoo Linux]])
| latest_release_version = 275.0.0<ref>{{Cite web
| urlreleased = {{Start date and age|2013|10|03}}<ref>{{Cite web |date=October 3, 2013 |title=coreos/manifest: Release v94.0.0 (Container Linux v94.0.0) |url=https://github.com/coreos/manifest/releases/tag/v275v94.0.0 |access-date=September 22, 2014 |website=github.com}}</ref>
| latest release version = 2512.3.0<ref>{{Cite web |date=2020-05-22 |title=CoreOS Container Linux Release Notes # Stable channel |url=https://coreos.com/releases/#2512.3.0 |access-date=2020-05-22 | website=coreos.com |archive-date=2020-11-11 |archive-url=https://web.archive.org/web/20201111201601/https://coreos.com/releases/#2512.3.0 }}</ref>
| title = Release v275.0.0: CoreOS v275.0.0 | work = coreos/manifest
| latest release date = {{Start date and age|2020|05|22}}
| date = 2014-04-01 | accessdate = 2014-04-03
| latest preview version = 2513.2.0<ref>{{Cite web |date=2020-05-22 |title=CoreOS Container Linux Release Notes # Beta channel |url=https://coreos.com/releases/#2513.2.0 |access-date=2020-05-22 |website=coreos.com |archive-date=2020-11-11 |archive-url=https://web.archive.org/web/20201111201601/https://coreos.com/releases/#2513.2.0}}</ref>(Beta) / {{Start date and age|2020|05|22}}<br>2514.1.0<ref>{{Cite web |date=2020-05-22 |title=CoreOS Container Linux Release Notes # Alpha channel |url=https://coreos.com/releases/#2514.1.0 |access-date=2020-05-22 |website=coreos.com |archive-date=2020-11-11 |archive-url=https://web.archive.org/web/20201111201601/https://coreos.com/releases/#2514.1.0}}</ref>(Alpha)
| publisher = github.com
| latest preview date = {{Start date and age|2020|05|22}}
}}</ref>
| working state = Discontinued<ref name=eol>{{Cite web|title=End-of-life announcement for CoreOS Container Linux|url=https://coreos.com/os/eol/|access-date=2020-08-16|website=coreos.com|language=en}}</ref>
| latest_release_date = {{Start date and age|2014|03|04|df=yes}}
| license = [[Apache License&nbsp;2.0]]<ref>{{Cite web |date=March 13, 2014 |title=CoreOS Pilot Agreement |url=https://coreos.com/legal/pilot/ |archive-url=https://web.archive.org/web/20140912161231/https://coreos.com/legal/pilot/ |archive-date=September 12, 2014 |access-date=March 26, 2014 |website=coreos.com}}</ref><ref name="license-etcd">{{Cite web
| working_state = In development
| license = [[Apache License 2.0]]<ref>{{Cite web
| url = https://coreos.com/legal/pilot/
| title = CoreOS Pilot Agreement
| date = 2014-03-13 | accessdate = 2014-03-26
| publisher = coreos.com
}}</ref><ref>{{Cite web
| url = https://github.com/coreos/etcd/blob/master/LICENSE
| title = coreos/etcd: etcd/LICENSE at master | work = coreos/etcd
| date = 2013-07-July 31, 2013 | accessdateaccess-date = 2014-03-March 26, 2014
| publisherwebsite = github.com
}}</ref>
| marketing_targetmarketing target = [[Server = (computing)|Servers]] and [[Computer cluster|clusters]]
| programmed in =
| programmed_in =
| prog language =
| prog_language =
| language = =
| flagship = =
| updatemodel = =
| package manager =
| package_manager =
| succeeded by = Fedora CoreOS<br>RHEL CoreOS<br>Flatcar Container Linux
| website = {{URL|https://coreos.com/}}
| repo = {{URL|github.com/coreos}}
}}
 
'''Container Linux''', formerly '''CoreOS Linux''', is ana discontinued [[openOpen-source software|open-source]] lightweight [[operating system]] based on the [[Linux kernel]] and designed for providing infrastructure tofor [[Computer cluster|clustered]] deployments,. while focusing on automation, easeOne of applicationsits deployment,focuses security, reliability andwas [[scalability]]. As an operating system, CoreOSContainer Linux providesprovided only the minimal functionality required for deploying applications inside [[software container]]s, together with built-in mechanisms for [[service discovery]] and configuration sharing.<ref name="container-linux.com-737364rename">{{Cite web
| url = https://coreos.com/blog/tectonic-self-driving.html#coreos-linux-is-now-container-linux
| title = CoreOS Linux is now Container Linux
| access-date = 20 December 2016
| website = coreos.com
}}</ref><ref name="linux.com-737364">{{Cite web
| url = http://www.linux.com/news/featured-blogs/200-libby-clark/737364-brandon-philips-how-the-coreos-linux-distro-uses-cgroups
| title = Brandon Philips: How the CoreOS Linux Distro Uses Cgroups
| date = 2013-09-09September |9, accessdate = 2014-02-132013
| access-date = February 13, 2014
| author = Libby Clark | publisher = linux.com
| author = Libby Clark
}}</ref><ref name="wired-201308">{{Cite web
| publisher = [[Linux.com]]
| url = http://www.wired.com/wiredenterprise/2013/08/coreos-the-new-linux/
| archive-url = https://web.archive.org/web/20140222051301/http://www.linux.com/news/featured-blogs/200-libby-clark/737364-brandon-philips-how-the-coreos-linux-distro-uses-cgroups
| archive-date = February 22, 2014
}}</ref><ref name="wired-201308">{{cite magazine
| url = https://www.wired.com/wiredenterprise/2013/08/coreos-the-new-linux/
| title = Linux Hackers Rebuild Internet From Silicon Valley Garage
| date = 2013-08-August 21, 2013 | accessdateaccess-date = 2014-02-February 13, 2014
| author = Cade Metz | publishermagazine = wired.com[[Wired (magazine)|Wired]]
}}</ref><ref name="itnews2day">{{Cite web
| url = http://itnews2day.com/2013/08/22/coreos-linux-based-server-systems/
| title = CoreOS – a new approach to Linux-based server systems
| date = 2013-08-August 22, | accessdate = 2014-03-262013
| access-date = March 26, 2014
| publisher = itnews2day.com
| website = itnews2day.com
}}</ref><ref name="coreos-using">{{Cite web
| archive-date = November 29, 2014
| archive-url = https://web.archive.org/web/20141129021412/http://itnews2day.com/2013/08/22/coreos-linux-based-server-systems/
| url-status = dead
}}</ref><ref name="coreos-using">{{Cite web
| url = https://coreos.com/using-coreos/
| title = Using CoreOS |documentation: work =Using CoreOS documentation
| accessdateaccess-date = 2014-02-February 13, 2014
| publisherwebsite = coreos.com
| archive-url = https://web.archive.org/web/20140223040854/https://coreos.com/using-coreos/
| archive-date = February 23, 2014
}}</ref>
 
Container Linux shares foundations with [[Gentoo Linux]],<ref name="coreos-sdk-building">{{cite web
| url = https://coreos.com/os/docs/latest/sdk-building-development-images.html#updating-portage-stable-ebuilds-from-gentoo
| title = Building development images: Updating portage-stable ebuilds from Gentoo
| access-date = May 24, 2016
| website = coreos.com
| archive-url = https://web.archive.org/web/20170714053215/https://coreos.com/os/docs/latest/sdk-building-development-images.html#updating-portage-stable-ebuilds-from-gentoo
| archive-date = July 14, 2017
}}</ref><ref name="gentoo-based">{{cite web
| url = https://wiki.gentoo.org/wiki/Distributions_based_on_Gentoo
| title = Distributions based on Gentoo
| date = March 25, 2016 | access-date = May 24, 2016
| website = gentoo.org
}}</ref> [[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.<ref name="itnews2day" /><ref>{{cite web
| url = https://www.youtube.com/watch?v=JeICd9XyXfY&t=422
| title = CoreOS: Anatomy of a CoreOS update
| date = July 8, 2014 | access-date = July 25, 2014
| author = Brian Harrington | publisher = Rackspace
| website = youtube.com
}}</ref>{{rp|7:02}} CoreOS was developed primarily by [[Alex Polvi]], Brandon Philips, and Michael Marineau,<ref name="wired-201308" /> with its major features available as a [[stable release]].<ref>{{cite web
| url = https://coreos.com/blog/stable-release/
| title = CoreOS Stable Release
| date = July 25, 2014 | access-date = August 28, 2014
| author = Alex Polvi | website = coreos.com
}}</ref><ref>{{cite web
| url = https://coreos.com/releases/
| title = CoreOS Release Notes
| access-date = August 28, 2014
| website = coreos.com
| archive-date = November 11, 2020
| archive-url = https://web.archive.org/web/20201111201601/https://coreos.com/releases/
| url-status = dead
}}</ref><ref>{{cite web
| url = https://coreos.com/blog/etcd-2.0-release-first-major-stable-release/
| title = etcd&nbsp;2.0 Release – First Major Stable Release
| date = January 28, 2015 | access-date = June 14, 2015
| author = Brandon Philips | website = coreos.com
}}</ref>
 
The CoreOS team announced the [[End-of-life (product)|end-of-life]] for Container Linux on May 26, 2020,<ref name=eol /> offering [[Fedora (operating system)#CoreOS|Fedora CoreOS]],<ref>{{Cite web|title=Fedora CoreOS Documentation :: Fedora Docs Site|url=https://docs.fedoraproject.org/en-US/fedora-coreos/|access-date=2020-08-16|website=docs.fedoraproject.org}}</ref> and [[Red Hat Enterprise Linux|RHEL]] CoreOS as its replacement.
CoreOS is a [[Fork (software development)|fork]] of [[Chrome OS]], using it as a base while adding new functionality. {{As of|2014|2}}, CoreOS is actively developed, primarily by Alex Polvi, Brandon Philips and Michael Marineau.<ref name="wired-201308" /><ref name="itnews2day" />
 
== {{Anchor|ETCDROCKET|ETCDCTLAPPC|ACI|OCP|OCI|RKT}}Overview ==
CoreOSContainer Linux provides no [[package manager]] as a way for distributing payload applications, requiring instead all applications to run inside their containers,. usingServing [[Dockeras (software)|Docker]]a andsingle itscontrol underlyinghost, a Container [[Linux Containers]]instance (LXC)uses the underlying [[operating system–level-system-level virtualization]] technologyfeatures forof runningthe Linux kernel to create and configure multiple containers that perform as isolated [[Linux]] systems. (containers)That onway, a single control host[[Resource (CoreOScomputer instancescience).|resource]] partitioning Thatbetween way, resource partitioningcontainers is performed through multiple isolated [[userspace]] instances, instead of using a [[hypervisor]] and providing full-fledged [[virtual machine]]s. This approach relies on the Linux kernel's [[cgroups]] functionality, which provides [[namespace isolation]] and abilities to limit, account and isolate [[ResourceLinux (computer science)namespaces|resource usagenamespaces]] ([[CPU]]functionalities, memory, disk [[I/O]], etc.) of [[process group]]s.<ref name="linux.com-737364" /><ref name="coreos-using" /><ref>{{Cite web
| url = https://coreoslwn.comnet/using-coreosArticles/docker256389/
| title = UsingNotes dockerfrom witha CoreOS | work = CoreOS documentationcontainer
| date = October 29, 2007 | access-date = July 3, 2016
| accessdate = 2014-02-13
| author = Jonathan Corbet | publisher = coreos[[LWN.comnet]]
}}</ref><ref>{{Cite web
| url = https://lwn.net/Articles/621006/
| title = Control group namespaces
| date = November 19, 2014 | access-date = July 3, 2016
| author = Jake Edge | publisher = [[LWN.net]]
}}</ref> which together provide abilities to limit, account and isolate resource usage ([[CPU]], memory, disk [[I/O]], etc.) for the collections of userspace [[Process (computing)|processes]].<ref name="linux.com-737364" /><ref name="coreos-using" /><ref name="coreos-containers">{{Cite web
| url = https://coreos.com/using-coreos/containers/
| title = CoreOS documentation: Using Docker with CoreOS
| access-date = June 14, 2015
| website = coreos.com
| archive-url = https://web.archive.org/web/20160804005603/https://coreos.com/using-coreos/containers/
| archive-date = August 4, 2016
}}</ref>
 
Initially, Container Linux exclusively used [[Docker (software)|Docker]] as a component providing an additional layer of abstraction and [[Interface (computing)|interface]]<ref>{{Cite web
| url = http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/
| title = Docker 0.9: Introducing execution drivers and libcontainer
| date = March 10, 2014 | access-date = January 20, 2015
| website = docker.com
}}</ref> 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.<ref name="linux.com-737364" /><ref name="coreos-containers" /> 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 [[Communications protocol|protocol]] for discovering and retrieving container images.<ref>{{Cite web
| url = https://www.linux.com/news/featured-blogs/200-libby-clark/806347-collaboration-summit-keynote-alex-polvi-coreos
| title = CoreOS Co-Founder Alex Polvi Talks Containers, Rocket vs. Docker, and More
| date = January 30, 2015 | access-date = June 14, 2015
| author = Libby Clark | publisher = [[Linux.com]]
}}</ref><ref>{{Cite web
| url = http://www.informationweek.com/cloud/infrastructure-as-a-service/rocket-containers-how-coreos-plans-to-challenge-docker/d/d-id/1319167
| title = Rocket Containers: How CoreOS Plans To Challenge Docker
| date = February 20, 2015 | access-date = June 14, 2015
| author = Charles Babcock | website = informationweek.com
}}</ref><ref>{{Cite web
| url = https://coreos.com/blog/rocket/
| title = CoreOS is building a container runtime, rkt
| date = December 1, 2014 | access-date = June 14, 2015
| author = Alex Polvi | website = coreos.com
}}</ref><ref name="lwn-631630">{{Cite web
| url = https://lwn.net/Articles/631630/
| title = New etcd, appc, and Rocket releases from CoreOS
| date = February 4, 2015 | access-date = June 22, 2015
| author = Josh Berkus | publisher = [[LWN.net]]
}}</ref> 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<ref name="lwn-644089">{{Cite web
| url = https://lwn.net/Articles/644089/
| title = CoreOS Fest and the world of containers, part 1
| date = May 13, 2015 | access-date = June 22, 2015
| author = Josh Berkus | publisher = [[LWN.net]]
}}</ref><ref>{{Cite web
| url = https://lwn.net/Articles/624349/
| title = The Rocket containerization system
| date = December 3, 2014 | access-date = June 22, 2015
| author = Nathan Willis | publisher = [[LWN.net]]
}}</ref> 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,<ref>
{{cite news
| last1 = McAllister
| first1 = Neil
| title = Docker and chums unveil standards org for software containers
| url = https://www.theregister.co.uk/2015/06/22/open_container_project/
| department = Data Centre
| newspaper = The Register
| publication-date = 2015-06-22
| access-date = 2017-01-19
| quote = Announced at the DockerCon conference in San Francisco on Monday, the Open Container Project (OCP) will maintain and develop a common container runtime and image format based in part on code and specs donated by Docker.
}}
</ref> which was announced by a group of large tech companies in June 2015.<ref>{{cite news
| url = https://techcrunch.com/2015/06/22/docker-coreos-google-microsoft-amazon-and-others-agree-to-develop-common-container-standard/
| title = Docker, CoreOS, Google, Microsoft, Amazon and others come together to develop common container standard
| date = June 22, 2015 | access-date = June 24, 2015
| author = Frederic Lardinois | work = [[TechCrunch]]
}}</ref><ref>{{Cite web
| url = https://www.opencontainers.org/pressrelease/
| title = Industry Leaders Unite to Create Project for Open Container Standards
| date = June 22, 2015
| access-date = June 24, 2015
| website = opencontainers.org
| archive-url = https://web.archive.org/web/20150813223334/https://www.opencontainers.org/pressrelease/
| archive-date = August 13, 2015
}}</ref><ref>{{cite web
| url = https://www.theregister.co.uk/2015/07/22/open_container_status_update/
| title = Open Container Project renames, says standard is just weeks away: Linux Foundation, Docker and friends opt for Open Container Initiative
| date = July 22, 2015 | access-date = January 29, 2016
| author = Neil McAllister | website = [[The Register]]
}}</ref>
 
Container Linux uses [[ebuild]] scripts from Gentoo Linux for automated [[Compiler|compilation]] of its system components,<ref name="coreos-sdk-building" /><ref name="gentoo-based" /> and uses [[systemd]] as its primary [[init]] system, with tight integration between systemd and various Container Linux's internal mechanisms.<ref name="linux.com-737364" /><ref>{{Cite web
For additional security and reliability of updates, CoreOS employs a dual-partition scheme for its read-only [[root filesystem]], meaning that the operating system update is performed as a whole and installed onto a passive secondary root [[Disk partition|partition]], which becomes active upon reboot or [[kexec]]. That way, easy rollbacks to known-to-be-stable version of the operating system are also ensured, and each boot partition can be [[Digital signature|signed]] for additional security. Writable parts of the filesystem are stored in a separate "state" partition, which is automatically resized to fill all available disk space upon reboots. CoreOS uses [[systemd]] as its primary init system, with tight integration between it and various CoreOS' internal parts.<ref name="linux.com-737364" /><ref name="coreos-using" /><ref>{{Cite web
| url = https://coreos.com/using-coreos/systemd/
| title = CoreOS documentation: Using systemd with CoreOS
| access-date = February 13, 2014
| website = coreos.com
| archive-url = https://web.archive.org/web/20140214143636/https://coreos.com/using-coreos/systemd/
| archive-date = February 14, 2014
}}</ref>
 
=== {{Anchor|FASTPATCH|GOOGLE-OMAHA|COREUPDATE|LOCKSMITH}}Updates distribution ===
Container Linux achieves additional security and reliability of its operating system [[Software update|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 [[Disk partition|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 [[Digital signature|signed]] for additional security.<ref name="linux.com-737364" /><ref name="coreos-using" /><ref name="coreos-updates">{{Cite web
| url = https://coreos.com/using-coreos/updates/
| title = Updates & Patches - CoreOS |documentation: workUpdates =& CoreOS documentationpatches
| access-date = February 27, 2015
| accessdate = 2014-02-13
| publisherwebsite = coreos.com
| archive-url = https://web.archive.org/web/20140214150559/https://coreos.com/using-coreos/updates/
}}</ref><ref>{{Cite web
| archive-date = February 14, 2014
}}</ref> 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 [[Mount (computing)|mounted]] read-only under {{Mono|/usr}}.<ref name="activestate">{{Cite web
| url = http://www.activestate.com/blog/2013/08/alex-polvi-explains-coreos
| title = Alex Polvi Explains CoreOS
| date = August 28, 2013
| access-date = May 7, 2015
| author = Phil Whelan
| website = activestate.com
| archive-url = https://web.archive.org/web/20150224184727/http://www.activestate.com/blog/2013/08/alex-polvi-explains-coreos
| archive-date = February 24, 2015
}}</ref><ref>{{Cite web
| url = https://coreos.com/docs/cluster-management/scaling/adding-disk-space/
| title = CoreOS documentation: Adding Diskdisk Spacespace to Youryour CoreOS Machine | work = CoreOS documentationmachine
| access-date = February 27, 2015
| accessdate = 2014-02-13
| publisherwebsite = coreos.com
}}</ref><ref>{{Cite web
| url = https://coreos.com/using-coreosblog/systemdnew-filesystem-btrfs-cloud-config/
| title = UsingMajor systemdUpdate: withbtrfs, CoreOSDocker&nbsp;0.9, |add workusers, =writable CoreOS/etc, documentationand more!
| date = March 27, 2014 | access-date = February 27, 2015
| accessdate = 2014-02-13
| publisherauthor = Alex Polvi | website = coreos.com
}}</ref>
 
To ensure that only a certain part of the [[Computer cluster|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 (computing)|reboot]] manager for Container Linux.<ref>{{Cite web
CoreOS also provides '''<tt>etcd</tt>''', a [[Daemon (computing)|daemon]] which runs across all computers in a [[Computer cluster|cluster]], allowing configuration data to be easily shared by providing a dynamic configuration registry. Since the [[key–value data]] stored within <tt>etcd</tt> is automatically distributed and [[Replication (computing)|replicated]] (with automated [[master election]]), all changes are reflected across the entire cluster. Beside configuration management, <tt>etcd</tt> also provides [[service discovery]] by allowing deployed applications to announce themselves. Communication with <tt>etcd</tt> is performed through a simple [[API]], which internally uses [[JSON]] on top of [[HTTP]]; the API can be used directly (through <tt>[[cURL|curl]]</tt>, for example), or indirectly through '''<tt>etcdctl</tt>''' which is a [[command-line]] utility also supplied by CoreOS. <tt>etcd</tt> is written in [[Go language]] and distributed under the [[Apache License 2.0]].<ref name="linux.com-737364" /><ref name="coreos-using" /><ref>{{Cite web
| url = http://www.centurylinklabs.com/interviews/simple-introduction-to-coreos-with-ceo-alex-polvi-and-cto-brandon-philips/
| title = Simple Introduction to CoreOS with CEO Alex Polvi and CTO Brandon Philips
| date = June 6, 2014
| access-date = June 22, 2015
| website = centurylinklabs.com
| archive-url = https://web.archive.org/web/20150622162656/http://www.centurylinklabs.com/interviews/simple-introduction-to-coreos-with-ceo-alex-polvi-and-cto-brandon-philips/
| archive-date = June 22, 2015
}}</ref> 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|locksmithd}} [[Daemon (computing)|daemon]] that runs on cluster members, while the {{Mono|locksmithctl}} [[command-line utility]] manages configuration parameters.<ref>{{Cite web
| url = https://coreos.com/docs/cluster-management/setup/update-strategies/
| title = CoreOS documentation: Update strategies
| access-date = April 17, 2015
| website = coreos.com
}}</ref><ref>{{Cite web
| url = https://github.com/coreos/locksmith/blob/master/README.md
| title = coreos/locksmith: locksmith/README.md at master
| date = February 1, 2015 | access-date = April 17, 2015
| website = github.com
}}</ref> Locksmith is written in the [[Go language]] and distributed under the terms of the [[Apache License 2.0]].<ref>{{Cite web
| url = https://github.com/coreos/locksmith/blob/master/LICENSE
| title = coreos/locksmith: locksmith/LICENSE at master
| date = January 19, 2014 | access-date = April 17, 2015
| website = github.com
}}</ref>
 
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]].<ref name="theplatform-201502">{{Cite web
| url = http://www.nextplatform.com/2015/02/25/coreos-hyperscales-linux-by-making-it-invisible/
| title = CoreOS Hyperscales Linux By Making It Invisible
| date = February 15, 2015 | access-date = June 14, 2015
| author = Timothy Prickett Morgan | website = nextplatform.com
}}</ref><ref>{{Cite web
| url = https://code.google.com/p/omaha/
| title = Omaha – software installer and auto-updater for Windows
| access-date = October 11, 2014
| website = code.google.com
}}</ref><ref>{{Cite web
| url = http://omaha.googlecode.com/svn/wiki/OmahaOverview.html
| title = Omaha Overview
| date = September 23, 2009
| access-date = October 11, 2014
| website = omaha.googlecode.com
| archive-url = https://web.archive.org/web/20090506062328/http://omaha.googlecode.com/svn/wiki/OmahaOverview.html
| archive-date = May 6, 2009
}}</ref> Additionally, CoreOS provides ''CoreUpdate'' as a web-based [[Dashboard (management information systems)|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 system]]s.<ref name="coreos-updates" /><ref>{{Cite web
| url = https://godoc.org/github.com/coreos/go-omaha/omaha
| title = Package omaha
| date = June 24, 2014 | access-date = July 4, 2014
| website = godoc.org
}}</ref><ref>{{Cite web
| url = https://coreos.com/products/coreupdate/
| title = CoreOS documentation: CoreUpdate
| access-date = July 4, 2014
| website = coreos.com
}}</ref>
 
=== {{Anchor|ETCD|ETCDCTL|FLEET|FLEETD|FLEETCTL}}Cluster infrastructure ===
[[File:CoreOS Architecture Diagram.svg|thumb|right|upright=2.2|A high-level illustration of the CoreOS cluster architecture<ref>{{Cite web
| url = https://github.com/MarkMoudy/coreos-docker-CI-demo
| title = CoreOS&nbsp;+ Docker Development Environment Demo
| date = May 16, 2014 | access-date = April 16, 2015
| author = Mark Moudy | website = github.com
}}</ref>]]
 
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.<ref name="theplatform-201502" /><ref name="activestate" /> Since the [[key–value data]] stored within {{Mono|etcd}} is automatically [[Distributed computing|distributed]] and [[Replication (computing)|replicated]] with automated [[master election]] and [[Consensus (computer science)|consensus]] establishment using the [[Raft (computer science)|Raft]] algorithm, all changes in stored data are reflected across the entire cluster, while the achieved [[Redundancy (engineering)|redundancy]] prevents failures of single cluster members from causing data loss.<ref name="lwn-631630" /><ref name="lwn-617452">{{Cite web
| url = https://lwn.net/Articles/617452/
| title = Etcd and fleet
| date = October 22, 2014 | access-date = June 22, 2015
| author = Jonathan Corbet | publisher = [[LWN.net]]
}}</ref> Beside the configuration management, {{Mono|etcd}} also provides [[service discovery]] by allowing deployed applications to announce themselves and the services they offer. Communication with {{Mono|etcd}} is performed through an exposed [[REST]]-based API, which internally uses [[JSON]] on top of HTTP; the API may be used directly (through {{Mono|[[cURL|curl]]}} or {{Mono|[[wget]]}}, for example), or indirectly through {{Mono|etcdctl}}, which is a specialized command-line utility also supplied by CoreOS.<ref name="linux.com-737364" /><ref name="coreos-using" /><ref>{{Cite web
| url = https://coreos.com/using-coreos/etcd/
| title = CoreOS documentation: Using etcd with CoreOS | work = CoreOS documentation
| accessdateaccess-date = 2014-02-February 13, 2014
| publisherwebsite = coreos.com
}}</ref><ref>{{Cite web
| url = https://coreos.com/docs/cluster-management/setup/getting-started-with-etcd/
| title = CoreOS documentation: Getting Startedstarted with etcd | work = CoreOS documentation
| accessdateaccess-date = 2014-02-February 13, 2014
| publisherwebsite = coreos.com
}}</ref><ref>{{Cite web
| url = https://speakerdeck.com/philips/etcd-at-gosf
| title = etcd @ GoSF
| date = 2014-01-January 15, 2014 | accessdateaccess-date = 2014-02-February 13, 2014
| author = Brandon Philips | publisherwebsite = speakerdeck.com
}}</ref> etcd is also used in [[Kubernetes]] software.
 
Container Linux also provides the {{Mono|fleet}} 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.<ref>{{cite web|last1=Wood|first1=Josh|title=Container orchestration: Moving from fleet to Kubernetes|url=https://coreos.com/blog/migrating-from-fleet-to-kubernetes.html|website=coreos..com|publisher=CoreOS}}</ref> By using {{Mono|fleetd}}, Container Linux creates a distributed [[init|init system]] that ties together separate systemd instances and a cluster-wide {{Mono|etcd}} deployment;<ref name="lwn-617452" /> internally, {{Mono|fleetd}} daemon communicates with local {{Mono|systemd}} instances over [[D-Bus]], and with the {{Mono|etcd}} deployment through its exposed API. Using {{Mono|fleetd}} allows the deployment of single or multiple [[Software container|containers]] cluster-wide, with more advanced options including [[Redundancy (engineering)|redundancy]], [[failover]], deployment to specific cluster members, dependencies between containers, and grouped deployment of containers. A command-line utility called {{Mono|fleetctl}} is used to configure and monitor this distributed init system;<ref>{{Cite web
| url = https://www.digitalocean.com/community/tutorials/how-to-use-fleet-and-fleetctl-to-manage-your-coreos-cluster
| title = How To Use Fleet and Fleetctl to Manage your CoreOS Cluster
| date = September 12, 2014 | access-date = June 22, 2015
| author = Justin Ellingwood | website = digitalocean.com
}}</ref> internally, it communicates with the {{Mono|fleetd}} daemon using a JSON-based API on top of HTTP, which may also be used directly. When used locally on a cluster member, {{Mono|fleetctl}} communicates with the local {{Mono|fleetd}} instance over a [[Unix ___domain socket]]; when used from an external host, [[SSH tunnel]]ing is used with authentication provided through [[public SSH key]]s.<ref>{{Cite web
| url = https://coreos.com/docs/launching-containers/launching/launching-containers-fleet/
| title = CoreOS documentation: Launching containers with fleet
| access-date = April 3, 2014
| website = coreos.com
}}</ref><ref>{{Cite web
| url = https://coreos.com/docs/launching-containers/launching/fleet-using-the-client/
| title = CoreOS documentation: Using the client
| access-date = April 3, 2014
| website = coreos.com
}}</ref><ref>{{Cite web
| url = https://github.com/coreos/fleet/blob/master/README.md
| title = coreos/fleet: fleet/README.md at master
| date = February 18, 2014 | access-date = April 3, 2014
| website = github.com
}}</ref><ref>{{Cite web
| url = https://github.com/coreos/fleet/blob/master/Documentation/deployment-and-configuration.md
| title = coreos/fleet: fleet/Documentation/deployment-and-configuration.md at master (Deploying fleet)
| date = April 14, 2015 | access-date = April 17, 2015
| website = github.com
}}</ref><ref>{{Cite web
| url = https://github.com/coreos/fleet/blob/master/Documentation/api-v1.md
| title = coreos/fleet: fleet/Documentation/api-v1.md (fleet API v1)
| date = October 29, 2014 | access-date = April 17, 2015
| website = github.com
}}</ref>
 
All of the above-mentioned daemons and command-line utilities ({{Mono|etcd}}, {{Mono|etcdctl}}, {{Mono|fleetd}} and {{Mono|fleetctl}}) are written in the Go language and distributed under the terms of the Apache License 2.0.<ref name="license-etcd" /><ref>
== Deployment ==
{{Cite web
In addition to running on dedicated hardware, where it can be either permanently installed to disk or remotely booted via [[Preboot Execution Environment|PXE]] or [[iPXE]], CoreOS supports deployments on various [[hardware virtualization]] platforms, including [[Amazon EC2]], [[QEMU]]/[[Kernel-based Virtual Machine|KVM]], [[OpenStack]], [[Vagrant (software)|Vagrant]] and [[VMware]].<ref name="coreos-using" /><ref>{{Cite web
| url = https://github.com/coreos/fleet/blob/master/LICENSE
| title = coreos/fleet: fleet/LICENSE at master
| date = February 6, 2014 | access-date = April 3, 2014
| website = github.com
}}
</ref>
 
== {{Anchor|TECTONIC|FLANNEL}}Deployment ==
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),<ref>{{Cite web
| url = https://coreos.com/docs/running-coreos/bare-metal/installing-to-disk/
| title = CoreOS documentation: Installing CoreOS to Disk | work = CoreOS documentationdisk
| accessdateaccess-date = 2014-02-February 13, 2014
| publisherwebsite = coreos.com
}}</ref> or booted remotely [[Network booting|over a network]] using [[Preboot Execution Environment]] (PXE) in general, or [[iPXE]] as one of its implementations.<ref>{{Cite web
}}</ref><ref>{{Cite web
| url = https://coreos.com/docs/running-coreos/bare-metal/booting-with-pxe/
| title = CoreOS documentation: Booting CoreOS via PXE | work = CoreOS documentation
| accessdateaccess-date = 2014-02-February 13, 2014
| publisherwebsite = coreos.com
}}</ref><ref>{{Cite web
| url = https://coreos.com/docs/running-coreos/bare-metal/booting-with-ipxe/
| title = CoreOS documentation: Booting CoreOS via iPXE | work = CoreOS documentation
| accessdateaccess-date = 2014-02-February 13, 2014
| publisherwebsite = coreos.com
}}</ref> CoreOS also supports deployments on various [[hardware virtualization]] platforms, including [[Amazon Elastic Compute Cloud|Amazon EC2]], [[DigitalOcean]], [[Google Compute Engine]], [[Microsoft Azure]], [[OpenStack]], [[QEMU]]/[[Kernel-based Virtual Machine|KVM]], [[Vagrant (software)|Vagrant]] and [[VMware]].<ref name="coreos-using" /><ref>{{Cite web
| url = https://coreos.com/blog/digital-ocean-supports-coreos/
| title = CoreOS Image Now Available On DigitalOcean
| date = September 5, 2014 | access-date = September 5, 2014
| author = Alex Crawford | website = coreos.com
}}</ref><ref>{{cite web
| url = https://www.theregister.co.uk/2014/05/23/google_loads_coreos_onto_its_cloud/
| title = Google brings futuristic Linux software CoreOS onto its cloud
| date = May 23, 2014 | access-date = May 26, 2014
| author = Jack Clark | website = [[The Register]]
}}</ref><ref>{{Cite web
| url = https://coreos.com/blog/coreos-available-on-azure/
| title = CoreOS Now Available On Microsoft Azure
| date = October 20, 2014 | access-date = October 22, 2014
| author = Alex Crawford | website = coreos.com
}}</ref> 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|2015|04}}, Tectonic is planned to be offered as [[beta software]] to select customers.<ref name="lwn-644089" /><ref>{{cite news
| url = https://www.zdnet.com/article/coreos-is-bringing-googles-kubernetes-to-the-enterprise/
| title = CoreOS is bringing Google's Kubernetes to the enterprise
| date = April 6, 2015 | access-date = April 29, 2015
| author = Steven J. Vaughan-Nichols | work = [[ZDNet]]
}}</ref><ref>{{cite magazine
| url = https://www.forbes.com/sites/benkepes/2015/04/06/coreos-and-google-make-their-defensive-plays-is-docker-the-victim/
| title = CoreOS And Google Make Their Defensive Plays, Is Docker The Victim?
| date = April 6, 2015 | access-date = April 29, 2015
| author = Ben Kepes | magazine = [[Forbes]]
}}</ref> Furthermore, CoreOS provides ''Flannel'' as a component, implementing an [[overlay network]] required primarily for the integration with Kubernetes.<ref name="lwn-644089" /><ref>{{Cite web
| url = https://coreos.com/blog/introducing-rudder/
| title = Introducing flannel: An etcd-backed overlay network for containers
| date = August 28, 2014 | access-date = June 22, 2015
| author = Eugene Yakubovich | website = coreos.com
}}</ref><ref>{{Cite web
| url = http://www.slideshare.net/lorispack/using-coreos-flannel-for-docker-networking
| title = Tutorial on using CoreOS Flannel for Docker
| date = November 2014 | access-date = June 22, 2015
| website = slideshare.net
}}</ref>
 
{{As of|2015|2}}, Container Linux supports only the [[x86-64]] architecture.<ref name="theplatform-201502" />
 
{{Clear}}
 
== {{Anchor|Derivatives}}Derivatives ==
Following its acquisition of CoreOS, Inc.<ref>{{Cite web|url=https://www.cnbc.com/2018/01/30/red-hat-buys-coreos-for-250-mililon.html|title=Red Hat pays $250 million for CoreOS, a start-up that sells Google-developed technology|last=Rosoff|first=Matt|date=2018-01-30|website=CNBC|language=en|access-date=2019-06-06}}</ref> in January 2018, Red Hat announced<ref>{{Cite web|url=https://coreos.com/blog/fedora-coreos-red-hat-coreos-and-future-container-linux|title=Fedora CoreOS, Red Hat CoreOS, and the future of Container Linux {{!}} CoreOS|website=coreos.com|access-date=2019-06-06}}</ref> 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 Flatcar Container Linux, a derivative of CoreOS Container Linux.<ref>{{Cite web|url=https://kinvolk.io/blog/2018/03/announcing-the-flatcar-linux-project/|title=Announcing the Flatcar Linux project {{!}} Kinvolk|website=kinvolk.io|date=March 6, 2018 |access-date=2019-06-06}}</ref> Flatcar tracks the upstream CoreOS alpha, beta, and stable channel releases, with an experimental Edge release channel added in May 2019.<ref>{{Cite web|url=https://kinvolk.io/blog/2019/05/introducing-the-flatcar-linux-edge-channel/|title=Introducing the Flatcar Linux Edge Channel {{!}} Kinvolk|website=kinvolk.io|date=May 15, 2019 |access-date=2019-06-06}}</ref>
 
== Reception ==
[[LWN.net]] reviewed CoreOS in 2014:<ref>[http://lwn.net/Articles/593928/ CoreOS: A different kind of Linux distribution &#91;LWN.net&#93;]</ref>
{{quote|For those who are putting together large, distributed systems—web applications being a prime example—CoreOS would appear to have a lot of interesting functionality. It should allow applications of that type to grow and shrink as needed with demand, as well as provide a stable platform where upgrades are not a constant headache. For "massive server deployments", CoreOS, or something with many of the same characteristics, looks like the future.}}
== See also ==
{{Portal|Free and open-source software|Linux}}
 
* [[Application virtualization]]{{snd}} software technology that encapsulates application software from the operating system on which it is executed
{{Div col||25em}}
* [[Comparison of application virtualization software]]{{snd}} various portable and scripting language virtual machines
* [[Application virtualization]]
* [[Comparison of applicationplatform virtualization software]]{{snd}} various emulators and hypervisors, which emulate the whole physical computers
* [[LXC]] (Linux Containers){{snd}} an environment for running multiple isolated Linux systems (containers) on a single Linux control host
* [[Comparison of platform virtualization software]]
* [[Operating system–level-system-level virtualization implementations]]{{snd}} based on operating system kernel's support for multiple isolated userspace instances
* [[Software as a service]] (SaaS){{snd}} a software licensing and delivery model that hosts the software centrally and licenses it on a subscription basis
* [[Virtualization]]{{snd}} a general concept of providing virtual versions of computer hardware platforms, operating systems, storage devices, etc.
* [[Virtualization]]
{{Div col end}}
 
== References ==
Line 141 ⟶ 450:
 
== External links ==
{{DivCommons colcategory||25emCoreOS}}
* {{Official website}} and [[GitHub]] source code repositories: {{GitHub|coreos|CoreOS|link=hidden}}, {{GitHub|coreos/etcd|etcd|link=hidden}}, {{GitHub|coreos/fleet|fleet|link=hidden}}, {{GitHub|coreos/rkt|rkt|link=hidden}} and {{GitHub|coreos/coreos-overlay|CoreOS-overlay|link=hidden}}
* {{Official website|https://coreos.com/docs/}}
* {{DistroWatch|CoreOS|name=CoreOS}}
* [https://coreos.com/docs/ CoreOS documentation]
* [http://www.sebastien-han.fr/blog/2013/09/03/first-glimpse-at-coreos/ First Glimpseglimpse at CoreOS], September 3, 2013, by Sébastien Han
* [https://www.zdnet.com/article/coreos-linux-for-the-cloud-and-the-datacenter/ CoreOS: Linux for the cloud and the datacenter], [[ZDNet]], July 2, 2014, by Steven J. Vaughan-Nichols
* [https://github.com/coreos CoreOS source on GitHub]
* [https://www.infoworld.com/article/2692889/coreos-an-existential-threat-to-linux-vendors.html What's CoreOS? An existential threat to Linux vendors], ''[[InfoWorld]]'', October 9, 2014, by Matt Asay
* [https://github.com/coreos/etcd etcd source on GitHub]
* [https://www.thecloudcast.net/2015/03/the-cloudcast-180-understanding-coreos.html Understanding CoreOS distributed architecture], March 4, 2015, a talk to Alex Polvi by Aaron Delp and Brian Gracely
* [https://github.com/coreos/fleet fleet source on GitHub]
* [https://github.com/coreos/fleet/blob/master/Documentation/architecture.md CoreOS fleet architecture], August 26, 2014, by Brian Waldon et al.
{{Div col end}}
* [https://cloudplatform.googleblog.com/2014/05/official-coreos-images-are-now-available-on-google-compute-engine.html Running CoreOS on Google Compute Engine], May 23, 2014
 
* [https://www.phoronix.com/scan.php?page=news_item&px=CoreOS-Btrfs-To-EXT4-OverlayFS CoreOS moves from Btrfs to Ext4&nbsp;+ OverlayFS], [[Phoronix]], January 18, 2015, by Michael Larabel
 
* [https://lwn.net/Articles/646054/ Containers and persistent data], [[LWN.net]], May 28, 2015, by Josh Berkus
{{Linux}}
* [https://www.flatcar-linux.org/ Flatcar Container Linux]
{{Unix-like}}
{{Linux distributions}}{{Virtualization software}}
{{Operating system}}
{{Linux containers}}
 
[[Category:Linux softwaredistributions]]
[[Category:OperatingEnterprise systemLinux technologydistributions]]
[[Category:OperatingLinux system securitycontainerization]]
[[Category:VirtualizationContainerization software]]
[[Category:Red Hat software]]
[[Category:Software using the Apache license]]
[[Category:Virtualization software for Linux]]