How to distinguish between Create and Run Container
This article mainly explains "how to distinguish Create from Run Container". Interested friends may wish to have a look at it. The method introduced in this paper is simple, fast and practical. Now let the editor take you to learn "how to distinguish Create from Run Container".
You should make sence these points:
The process entry of runC create command and run command is unified from the / runc/utils_linux.go#334 main.startContainer method and distinguished by create flag.
In business logic, there are two main step components:
Firstly create container filesystem and construct a linuxcontainer object by creatContainer function.
Secondly start process in container by runner.run function.
The main logic is in the startup process of process. Note the following points:
For the isolation of namespace, the clone flags is encapsulated mainly through bootstrapData.
The bootstrapData-encapsulated config is passed by sendconfig to the init process from the container.
Call the system setns for associate of namespace and process.
Oom_score_adj and rlimits and so on are all set up here.
At this point, I believe you have a deeper understanding of "how to distinguish between Create and Run Container". You might as well do it in practice. Here is the website, more related content can enter the relevant channels to inquire, follow us, continue to learn!