This is a creation in Article, where the information may have evolved or changed.
Reprinted from: Http://www.yinwang.org/blog-cn/2016/03/27/docker
When I laugh at the go language, some people say to me, you say that the go language is rubbish, but you look like a cloud project such as Docker and Kubernetes, why is it written in the go language?
The answer is simple: these things do not have to be written in the go language, it is not a problem to implement them in other languages, but they happen to be written in the go language. Projects such as Docker and Kubernetes rely only on the architectural details of the operating system, there are no special requirements for languages, and there is no performance requirement, so they can actually be used in any language (including Shell,perl,python,ruby,c,java ...). ) to achieve. Just because someone followed suit and wrote these things in the go language doesn't mean that the go language is a good thing. In today's chaotic IT industry, anything you do will be used, not to mention the Go-ogle (GO) word (ROU);)
If you don't believe me, take a look at this project called "Bocker", which uses only 100 lines of shell script to implement the most important functions of Docker. To put it bluntly, the principle of Docker is to create directories, copy system files and related library code, and then chroot, so that when your code runs inside, you assume that you are monopolizing a Linux system. The shell language of the poor, I have a special introduction, so I will not say more. A project that could have been implemented with a shell script is now being used by go to show that go is a good language?
Another thing many people don't know is that Docker and kubernetes, while very hot, are not really a great technology. Docker does not solve the fundamental problem of UNIX. UNIX has never been a system with a good modular design. A variety of bizarre configuration files, the design of a lack of discipline and discipline. Between the various modules, version logic dependencies are intricate and tangled. So no matter how you fix it afterwards, it's hard to turn into a structured design. After many projects have been made into container, they communicate with rest and HTTP, making communication between system modules more difficult and complex.
After using Docker, you may find that UNIX fanatics are actually re-tossing the application architecture that Windows starts with, yet the communication between these applications is far from the maturity of COM and. Net.