mirror of https://github.com/docker/docs.git
Merge pull request #12250 from justincormack/cleanoverview
Clean up the overview
This commit is contained in:
commit
c43f1282da
|
@ -21,11 +21,11 @@ significantly reduce the delay between writing code and running it in production
|
||||||
|
|
||||||
Docker provides the ability to package and run an application in a loosely isolated
|
Docker provides the ability to package and run an application in a loosely isolated
|
||||||
environment called a container. The isolation and security allow you to run many
|
environment called a container. The isolation and security allow you to run many
|
||||||
containers simultaneously on a given host. Containers are lightweight because
|
containers simultaneously on a given host. Containers are lightweight and contain
|
||||||
they don't need the extra load of a hypervisor, but run directly within the host
|
everything needed to run the application, so you do not need to rely on what is
|
||||||
machine's kernel. This means you can run more containers on a given hardware
|
currently installed on the host. You can easily share containers while you work,
|
||||||
combination than if you were using virtual machines. You can even run Docker
|
and be sure that everyone you share with gets the same container that works in the
|
||||||
containers within host machines that are actually virtual machines!
|
same way.
|
||||||
|
|
||||||
Docker provides tooling and a platform to manage the lifecycle of your containers:
|
Docker provides tooling and a platform to manage the lifecycle of your containers:
|
||||||
|
|
||||||
|
@ -36,31 +36,6 @@ Docker provides tooling and a platform to manage the lifecycle of your container
|
||||||
production environment is a local data center, a cloud provider, or a hybrid
|
production environment is a local data center, a cloud provider, or a hybrid
|
||||||
of the two.
|
of the two.
|
||||||
|
|
||||||
## Docker Engine
|
|
||||||
|
|
||||||
_Docker Engine_ is a client-server application with these major components:
|
|
||||||
|
|
||||||
* A server which is a type of long-running program called a daemon process (the
|
|
||||||
`dockerd` command).
|
|
||||||
|
|
||||||
* A REST API which specifies interfaces that programs can use to talk to the
|
|
||||||
daemon and instruct it what to do.
|
|
||||||
|
|
||||||
* A command line interface (CLI) client (the `docker` command).
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The CLI uses the Docker REST API to control or interact with the Docker daemon
|
|
||||||
through scripting or direct CLI commands. Many other Docker applications use the
|
|
||||||
underlying API and CLI.
|
|
||||||
|
|
||||||
The daemon creates and manages Docker _objects_, such as images, containers,
|
|
||||||
networks, and volumes.
|
|
||||||
|
|
||||||
> **Note**: Docker is licensed under the open source Apache 2.0 license.
|
|
||||||
|
|
||||||
For more details, see [Docker Architecture](#docker-architecture) below.
|
|
||||||
|
|
||||||
## What can I use Docker for?
|
## What can I use Docker for?
|
||||||
|
|
||||||
**Fast, consistent delivery of your applications**
|
**Fast, consistent delivery of your applications**
|
||||||
|
@ -106,7 +81,8 @@ Docker *daemon*, which does the heavy lifting of building, running, and
|
||||||
distributing your Docker containers. The Docker client and daemon *can*
|
distributing your Docker containers. The Docker client and daemon *can*
|
||||||
run on the same system, or you can connect a Docker client to a remote Docker
|
run on the same system, or you can connect a Docker client to a remote Docker
|
||||||
daemon. The Docker client and daemon communicate using a REST API, over UNIX
|
daemon. The Docker client and daemon communicate using a REST API, over UNIX
|
||||||
sockets or a network interface.
|
sockets or a network interface. Another Docker client is Docker Compose,
|
||||||
|
that lets you work with applications consisting of a set of containers.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
@ -206,22 +182,9 @@ the default registry configuration):
|
||||||
6. When you type `exit` to terminate the `/bin/bash` command, the container
|
6. When you type `exit` to terminate the `/bin/bash` command, the container
|
||||||
stops but is not removed. You can start it again or remove it.
|
stops but is not removed. You can start it again or remove it.
|
||||||
|
|
||||||
#### Services
|
|
||||||
|
|
||||||
Services allow you to scale containers across multiple Docker daemons, which
|
|
||||||
all work together as a _swarm_ with multiple _managers_ and _workers_. Each
|
|
||||||
member of a swarm is a Docker daemon, and all the daemons communicate using
|
|
||||||
the Docker API. A service allows you to define the desired state, such as the
|
|
||||||
number of replicas of the service that must be available at any given time.
|
|
||||||
By default, the service is load-balanced across all worker nodes. To
|
|
||||||
the consumer, the Docker service appears to be a single application. Docker
|
|
||||||
Engine supports swarm mode in Docker 1.12 and higher.
|
|
||||||
|
|
||||||
## The underlying technology
|
## The underlying technology
|
||||||
Docker is written in the [Go programming language](https://golang.org/) and takes
|
Docker is written in the [Go programming language](https://golang.org/) and takes
|
||||||
advantage of several features of the Linux kernel to deliver its functionality.
|
advantage of several features of the Linux kernel to deliver its functionality.
|
||||||
|
|
||||||
### Namespaces
|
|
||||||
Docker uses a technology called `namespaces` to provide the isolated workspace
|
Docker uses a technology called `namespaces` to provide the isolated workspace
|
||||||
called the *container*. When you run a container, Docker creates a set of
|
called the *container*. When you run a container, Docker creates a set of
|
||||||
*namespaces* for that container.
|
*namespaces* for that container.
|
||||||
|
@ -229,36 +192,6 @@ called the *container*. When you run a container, Docker creates a set of
|
||||||
These namespaces provide a layer of isolation. Each aspect of a container runs
|
These namespaces provide a layer of isolation. Each aspect of a container runs
|
||||||
in a separate namespace and its access is limited to that namespace.
|
in a separate namespace and its access is limited to that namespace.
|
||||||
|
|
||||||
Docker Engine uses namespaces such as the following on Linux:
|
|
||||||
|
|
||||||
- **The `pid` namespace:** Process isolation (PID: Process ID).
|
|
||||||
- **The `net` namespace:** Managing network interfaces (NET:
|
|
||||||
Networking).
|
|
||||||
- **The `ipc` namespace:** Managing access to IPC
|
|
||||||
resources (IPC: InterProcess Communication).
|
|
||||||
- **The `mnt` namespace:** Managing filesystem mount points (MNT: Mount).
|
|
||||||
- **The `uts` namespace:** Isolating kernel and version identifiers. (UTS: Unix
|
|
||||||
Timesharing System).
|
|
||||||
|
|
||||||
### Control groups
|
|
||||||
Docker Engine on Linux also relies on another technology called _control groups_
|
|
||||||
(`cgroups`). A cgroup limits an application to a specific set of resources.
|
|
||||||
Control groups allow Docker Engine to share available hardware resources to
|
|
||||||
containers and optionally enforce limits and constraints. For example,
|
|
||||||
you can limit the memory available to a specific container.
|
|
||||||
|
|
||||||
### Union file systems
|
|
||||||
Union file systems, or UnionFS, are file systems that operate by creating layers,
|
|
||||||
making them very lightweight and fast. Docker Engine uses UnionFS to provide
|
|
||||||
the building blocks for containers. Docker Engine can use multiple UnionFS variants,
|
|
||||||
including AUFS, btrfs, vfs, and DeviceMapper.
|
|
||||||
|
|
||||||
### Container format
|
|
||||||
Docker Engine combines the namespaces, control groups, and UnionFS into a wrapper
|
|
||||||
called a container format. The default container format is `libcontainer`. In
|
|
||||||
the future, Docker may support other container formats by integrating with
|
|
||||||
technologies such as BSD Jails or Solaris Zones.
|
|
||||||
|
|
||||||
## Next steps
|
## Next steps
|
||||||
- Read about [installing Docker](../get-docker.md).
|
- Read about [installing Docker](../get-docker.md).
|
||||||
- Get hands-on experience with the [Getting started with Docker](index.md)
|
- Get hands-on experience with the [Getting started with Docker](index.md)
|
||||||
|
|
Loading…
Reference in New Issue