In the past two years, container technology and related tools and platforms have been extremely popular. In the major technical forums or cloud computing summit conference topics, will account for a large proportion, the mainstream cloud computing platforms without exception quickly provide container services.
All the big factories are using it
- sound of dripping water
Search docker popularity
- Distribution of docker keywords
What can docker do?
- Simplify configuration
- This is the main use scenario of docker publicized by docker company. The biggest advantage of virtual machine is that it can run all kinds of platforms (software, systems) with different configurations on your hardware facilities. Docker provides the same functions while reducing the overhead. It allows you to put the running environment and configuration in the code and then deploy it. The configuration of the same docker can be used in different environments, which reduces the coupling between hardware requirements and application environments.
- Code pipeline
- Managing the previous scenario is very helpful for managing the pipeline of code. Code from the developer’s machine to the final deployment in the production environment, need to go through a lot of intermediate environment. Every intermediate environment has its own tiny difference. Docker provides a consistent environment for applications from development to online, making the code pipeline much simpler.
- Improve development efficiency
- This brings some additional benefits: docker can improve the development efficiency of developers. If you want to see a more detailed example, you can refer to Aater’s speech at devopsdays Austin 2014 or dockercon. In different development environments, we all want to do two things well. First, we want to make the development environment as close to the production environment as possible. Second, we want to quickly build the development environment. Ideally, to achieve the first goal, we need to run each service in a separate virtual machine in order to monitor the running state of the service in the production environment. However, we don’t want to need a network connection every time. It’s very troublesome to connect remotely every time we recompile. This is what docker does very well. The memory of the machine in the development environment is usually small. When we used to use virtual environment, we often need to add memory for the machine in the development environment. Now docker can easily make dozens of services run in docker.
- Isolation application
- There are many reasons for you to choose to run different applications on a single machine, such as the scenario mentioned earlier to improve development efficiency. We often need to consider two things: one is to integrate servers to reduce costs, and the other is to split an integrated application into a single loosely coupled service. If you want to understand why loosely coupled applications are so important, please refer to Steve YeGe’s paper, which compares Google with Amazon.
- Consolidation server
- Just like integrating multiple applications through virtual machine, the ability of docker to isolate applications enables docker to integrate multiple servers to reduce costs. Because there is no memory occupation of multiple operating systems and the unused memory can be shared among multiple instances, docker can provide a better server integration solution than virtual machine.
- Debugging ability docker
- There are a lot of tools available, which are not necessarily for containers, but for containers. They provide many functions, including the ability to set checkpoints for containers, set versions, and see the differences between the two containers, which can help debug bugs.
- Multi tenant environment
- Another interesting use scenario of docker is in multi tenant applications, which can avoid the rewriting of key applications. A particular example of this scenario is the development of a fast, easy-to-use multi tenant environment for IOT applications. The basic code of multi tenant is very complex and difficult to deal with. Replanning such an application not only consumes time, but also wastes money. Using docker, you can create an isolated environment for multiple instances of each tenant’s application layer, which is not only simple but also low-cost. Of course, all this benefits from the startup speed of docker environment and its efficient diff command.
- Rapid deployment
- Before the virtual machine, it takes several days to introduce new hardware resources. Docker’s virtualization technology reduces this time to a few minutes. Docker just creates a container process without starting the operating system. This process only takes seconds. That’s what Google and Facebook value. You can create and destroy resources in the data center without worrying about the cost of restart. Usually, the resource utilization rate of data center is only 30%. By using docker and effective resource allocation, the resource utilization rate can be improved.
- Kubernetes and docker swarm
Devops = culture + process + tools
The emergence of Devops has its inevitability. In the software development life cycle, there are two bottlenecks. The first bottleneck was between the requirements stage and the development stage. In view of the changing requirements, high requirements were put forward for software developers. Later, agile methodology appeared, which emphasized adapting to requirements, rapid iteration and continuous delivery. As a result, there is a bottleneck between the deployment and delivery of Devops in the second phase, which may be the impact of a large number of development tasks.
Three principles of Devops:
- Infrastructure as code
- The foundation of Devops is to use automated scripts or software to implement repetitive things, such as docker (containerization), Jenkins (continuous integration), puppet (infrastructure construction), vagrant (virtualization platform), etc
- Continuous delivery
- Continuous delivery is to release reliable software in production environment and deliver it to users. Continuous deployment is not necessarily delivered to users. It involves two times: TTR (time to repair) repair time and TTM (time to Marketing) product launch time. To deliver reliable software efficiently, we need to reduce these two times as much as possible. There are many ways to deploy, such as blue-green deployment, Canary deployment and so on.
- Culture of collaboration
- Developers and operators must cooperate closely on a regular basis. Development should understand the operation and maintenance role as another user group of software. There are several suggestions for collaboration:
- 1. Automation (reducing unnecessary collaboration);
- 2. Small scope (the content of each modification should not be too much to reduce the risk of release);
- 3. Unified information distribution center (such as wiki, so that both sides can share information);
- 4. Standardized collaboration tools (such as Jenkins)
Docker positions in the top five annual salaries:
1. Devops Engineer
At the top of the list are Devops engineers, who remove communication barriers between development, release and OPS teams and achieve faster and more frequent software delivery.
Average annual salary: $119,552
2. Software Engineer / Senior Software Engineer
In this role, you will use docker to package the entire stack (such as the application’s libraries, frameworks, and code itself) and publish it as a separate package – without worrying about whether each individual component will run in a different environment.
Average annual salary:$107094 to $117927
3. Software Architect
The senior architects of Devops focus on the choice of architecture, operation and maintenance channel.
Average annual salary:$141,965
4. Full stack developers
In this role, you will incorporate docker into your development portfolio to accelerate the production, testing, and deployment of your applications.
Average annual salary: $110,848
5. Cloud Engineer
As a cloud engineer, you will use docker and other tools to manage, automate, extend, and monitor solutions in the cloud.
Average annual salary: $118,365
Container and docker have changed testing and software engineering in the past few years. Docker accounts for 83% of container usage in 2018 and 99% in 2019, and more and more enterprises are using docker.
The article is arranged on the Internet,Welcome to comment and correct. If you have any help, please click like + forward to share.
Welcome to the official account of the brother of migrant workers:The way of migrant workers’ Technology