update introduction

pull/467/head
Dorsey.Xu 2020-10-22 14:09:10 +08:00
parent 3a3939686c
commit ff7d5976a7
2 changed files with 17 additions and 17 deletions

View File

@ -1,10 +1,10 @@
## What is Docker
Docker is an in-company project launched by Solomon Hykes who is the founder of dotCloud when he was in France, it's a revolution based on dotCloud's years of cloud service experience, and [opened source with Apache 2.0 in 2013.03][docker-soft] maintained in [GitHub](https://github.com/moby/moby). Then, Docker joined the Linux Foundation and promoted [Open Containers Initlative (OCI)](https://www.opencontainers.org/).
Docker is an in-company project launched by Solomon Hykes who is the founder of dotCloud when he was in France, it's a revolution based on dotCloud's years of cloud service experience, and [open-sourced with Apache 2.0 in 2013.03][docker-soft] maintained in [GitHub](https://github.com/moby/moby). Then, Docker joined the Linux Foundation and promoted [Open Containers Initlative (OCI)](https://www.opencontainers.org/).
Docker has aroused widespread concern and discussion and had 5.2w stars and 1w forks in it's [GitHub](https://github.com/moby/moby) since it opening source.At the end of 2013, [dotCloud even decided to rename to Docker](https://blog.docker.com/2013/10/dotcloud-is-becoming-docker-inc/) due to the popularity of the project. Docker was developed in Ubuntu 12.04 at the beginning. Red Hat has supported Dokcer since RHEL 6.5. Google also widely applies Docker in its PaaS products.
Docker has aroused widespread concerns and discussions and had 52K stars and 10K forks in its [GitHub page](https://github.com/moby/moby) since being open-sourced. At the end of 2013, [dotCloud even decided to rename it to Docker](https://blog.docker.com/2013/10/dotcloud-is-becoming-docker-inc/) due to the popularity of the project. Docker was developed in Ubuntu 12.04 at the beginning. Red Hat has supported Dokcer since RHEL 6.5. Google has also widely applied Docker in its PaaS products.
Docker develops with [GO](https://golang.org/) launched by Google, based on [cgroup](https://zh.wikipedia.org/wiki/Cgroups) and [namespace](https://en.wikipedia.org/wiki/Linux_namespaces) of Linux Kernel and [Union FS](https://en.wikipedia.org/wiki/Union_mount) like [AUFS](https://en.wikipedia.org/wiki/Aufs) to package and isolate the processes which is belong to [Operating system level virtualization technology](https://en.wikipedia.org/wiki/Operating-system-level_virtualization). It is also called container because of the isolated process is independent of the host and other isolated processes. The initial implementation is based on [LXC](https://linuxcontainers.org/lxc/introduction/). It removed LXC and use [libcontainer](https://github.com/docker/libcontainer) instead which is developed by themself since 0.7. Starting with 1.11, it uses [runC](https://github.com/opencontainers/runc) and [containerd](https://github.com/containerd/containerd) further.
Docker is developed with [GO](https://golang.org/) launched by Google, based on [cgroup](https://zh.wikipedia.org/wiki/Cgroups) and [namespace](https://en.wikipedia.org/wiki/Linux_namespaces) of Linux Kernel and [Union FS](https://en.wikipedia.org/wiki/Union_mount) like [AUFS](https://en.wikipedia.org/wiki/Aufs) to package and isolate the processes which belong to [Operating system level virtualization technology](https://en.wikipedia.org/wiki/Operating-system-level_virtualization). It is also called container because of the fact that the isolated processes are independent of the host and other isolated processes. The initial implementation is based on [LXC](https://linuxcontainers.org/lxc/introduction/). It removed LXC and use [libcontainer](https://github.com/docker/libcontainer) instead which is developed by themself since 0.7. Starting with 1.11, it uses [runC](https://github.com/opencontainers/runc) and [containerd](https://github.com/containerd/containerd) further.
![Docker Architecture](https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/media/docker-on-linux.png)
@ -14,7 +14,7 @@ Docker develops with [GO](https://golang.org/) launched by Google, based on [cgr
Docker is further packaged on a container basis, from file system, network interconnection to process isolation, etc, greatly simplifying container craetion and maintenance.
The images below compare the differences between Docker and Traditional Virtualization. The traditional Virtual machine technology is to virtualize a set of hadware to run a complete operation system and run the required application process on this system. The application process in the container runs directly on the host kernel, and the container does not have its own Kernel and hadware virtualiztion. Therefore, container are lighter than traditional virtual machines.
The images below compare the differences between Docker and Traditional Virtualization. The traditional Virtual Machine technology is to virtualize a set of hardwares to run a complete operation system and run the required application process on this system. The application process in the container runs directly on the host kernel, and the container does not have its own Kernel and hardware virtualiztion. Therefore, containers are lighter than traditional virtual machines.
![Traditional Virtualization](_images/virtualization.png)

View File

@ -1,35 +1,35 @@
## Why use Docker ?
As a new virtualization solution, Docker has many advantager over
As a new virtualization technology, Docker has many advantages over
other traditional virtualization solutions.
### Use System Resources more efficiently
### Use System Resources more Efficiently
Docker has high utilization rate of system resources, because container does not need additional overhead such as hardware virtualization and running the whole system. It's more efficient than traditional virtual machine technology in application executing speed, memory expend and file storage speed. Therefore, a host with the same configuration can often run more applications than virtual machine technology.
Docker has high utilization rate of system resources, because container does not need additional overhead such as hardware virtualization or running the whole system. It's more efficient than traditional virtual machine technology in terms of execution speed, memory expense and file storage speed. Therefore, a host with the same configuration can often run more applications than virtual machine technology.
### Faster startup time
### Faster Startup Time
The traditional virtual machine technology needs minutes to startup application service, but Docker can do it in seconds or milliseconds due to running on the kernel of host machine and not running the whole system. It saves a considerable amount of time for developing, testing, deploying.
The traditional virtual machine technology needs minutes to startup application service, but Docker can do it in seconds or milliseconds due to running on the kernel of host machine and not running the whole system. It saves a considerable amount of time for development, testing and deployment.
### Consistent operating environment
### Consistent Operating Environment
The consensus problem of environment is a common problem in developing. It causes some bugs which weren't found at developing due to different environments of developing, testing, production. Docker's image provides a complete runtime environment without kernel, which ensures consistency of the application runtime environment so that problmes like * This piece of code is okey on my machine * do not recur.
Environment setup consistency is a common problem in DevOps. Inconsistent configuration can cause some bugs not found at development time but revealed at production due to the subtle differences between the development, testing and production environments. The docker image can provide a complete runtime environment without kernel, which ensures consistency of the application environment throughout its lifecycle, eliminating issues like * This piece of code is okey on my machine *.
### CI/CD
For development and operation[DevOps](https://zh.wikipedia.org/wiki/DevOps)people, desirable thing is to create or configure at once and run normally anywhere.
For development and operation[DevOps](https://zh.wikipedia.org/wiki/DevOps)engineers, the desirable thing is to create and configure once to run anywhere.
CI/CD can be achieved by customizing application mirrors with Docker. Developers can build images with [Dockerfile](../image/dockerfile/) and use [Continuous Integration](https://en.wikipedia.org/wiki/Continuous_integration) for integration testing. Operators can deply product environment quickly with this images, even use [Continuous Delivery/Deployment](https://en.wikipedia.org/wiki/Continuous_delivery) for automatic deployment.
CI/CD can be achieved by customizing application mirrors with Docker. Developers can build images with [Dockerfile](../image/dockerfile/) and use [Continuous Integration](https://en.wikipedia.org/wiki/Continuous_integration) for integration testing. Operation teams can deploy production environments quickly with the images, and even make automatic deployments possible by using [Continuous Delivery/Deployment](https://en.wikipedia.org/wiki/Continuous_delivery) techniques.
And `Dockerfile` makes mirror construction transparent.Not only does the developmentteam understand the application runtime environment, but it also facilitates the operation team to understande the requirements of the application and better deployment in production environments.
And `Dockerfile` makes mirror construction transparent. Not only does the development team understand the application runtime environment, but it also facilitates the operation team to understand the requirements of the application and better deployment in production environments.
### Easier migration
Because Docker ensures consistency in the execution environment, application migration is easier. Docker can run on many platforms, whether physical, virtual, public/private clouds, or even laptops, and the results are consistent.Therefore, users can easily migrate applications from one platform to another whitout worrying about the situation that different environment makes applications not running properly.
Because Docker ensures consistency in the execution environment, application migration is easier. Docker can run on multiple platforms, including physical, virtual machines or public/private clouds, with consistent results. Therefore, users can easily migrate applications from one platform to another whitout worrying about the cross-platform difficulties.
### Easier maintenance and extension
Docker uses layered storage and mirror technology, so it is easier to reuse the repetitive parts of the application and simpler to expand the image based on the basic mirror.In addition, the Docker team maintain a lot of high-quality [official images](https://hub.docker.com/search/?type=image&image_filter=official) together with various open source project team. It can be used directly in the production environment and customed which greatly reducing the cost of image production of application services.
Docker uses layered storage and mirror technology, so it is easier to reuse the repetitive parts of the application and simpler to expand the image based on the basic mirror. In addition, the Docker team maintains a lot of high-quality [official images](https://hub.docker.com/search/?type=image&image_filter=official) together with various open-source project teams. It can be used directly in the production environment with customization, greatly reducing the cost of image production of various application services.
### Contrast traditional virtual machines
@ -38,4 +38,4 @@ Docker uses layered storage and mirror technology, so it is easier to reuse the
| Boot | seconds | minutes |
| Disk Usage | MB | GB |
| Performance | close to native | weaker |
| System Support | thousandes | dozens in general |
| System Support | thousands | dozens in general |