Use lang en-US for samples
This commit is contained in:
parent
f2f93440a7
commit
13dadd8c59
33 changed files with 318 additions and 0 deletions
|
|
@ -121,6 +121,7 @@ nouveaux *namespaces* et placer le processus dedans.
|
|||
Par exemple, nous pouvons modifier sans crainte le nom de notre machine, si
|
||||
nous sommes passé dans un autre *namespace* `UTS` :
|
||||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
42sh# hostname --fqdn
|
||||
koala.zoo.paris
|
||||
|
|
@ -134,6 +135,7 @@ bash# exit
|
|||
42sh# hostname --fqdn
|
||||
koala.zoo.paris
|
||||
```
|
||||
</div>
|
||||
|
||||
Nous avons pu ici modifier le nom de machine, sans que cela n'affecte notre
|
||||
machine hôte.
|
||||
|
|
@ -167,6 +169,7 @@ Les mêmes `flags` sont utilisés lors des appels à `unshare(2)` ou `setns(2)`.
|
|||
Pour créer un nouveau processus qui sera à la fois dans un nouvel *namespace*
|
||||
réseau et dans un nouveau *namespace* CGroup, on écrirait un code similaire à :
|
||||
|
||||
<div lang="en-US">
|
||||
```c
|
||||
#include <sched.h>
|
||||
|
||||
|
|
@ -180,6 +183,7 @@ pid_t pid = clone(do_execvp,
|
|||
clone_flags,
|
||||
&args);
|
||||
```
|
||||
</div>
|
||||
|
||||
Le premier argument est un pointeur sur fonction. Il s'agit de la fonction qui
|
||||
sera appelée par le nouveau processus.
|
||||
|
|
@ -198,6 +202,7 @@ programmes s'exécutent dans les mêmes *namespaces*.
|
|||
|
||||
### Exemples
|
||||
|
||||
<div lang="en-US">
|
||||
```sh
|
||||
42sh$ ./cmpns $(pgrep influxdb) $(pgrep init)
|
||||
- cgroup: differ
|
||||
|
|
@ -208,7 +213,9 @@ programmes s'exécutent dans les mêmes *namespaces*.
|
|||
- user: same
|
||||
- uts: same
|
||||
```
|
||||
</div>
|
||||
|
||||
<div lang="en-US">
|
||||
```sh
|
||||
42sh$ ./cmpns $(pgrep init) self
|
||||
- cgroup: same
|
||||
|
|
@ -219,11 +226,13 @@ programmes s'exécutent dans les mêmes *namespaces*.
|
|||
- user: same
|
||||
- uts: same
|
||||
```
|
||||
</div>
|
||||
|
||||
Ici, `self` fait référence au processus actuellement exécuté.
|
||||
|
||||
Et pourquoi pas :
|
||||
|
||||
<div lang="en-US">
|
||||
```sh
|
||||
42sh$ unshare -m ./cmpns $$ self
|
||||
- cgroup: same
|
||||
|
|
@ -234,6 +243,7 @@ Et pourquoi pas :
|
|||
- user: same
|
||||
- uts: same
|
||||
```
|
||||
</div>
|
||||
|
||||
|
||||
## Rejoindre un *namespace*
|
||||
|
|
@ -242,6 +252,7 @@ Rejoindre un *namespace* se fait en utilisant l'appel système `setns(2)`,
|
|||
auquel on passe le *file descriptor* d'un des liens du dossier
|
||||
`/proc/<PID>/ns/` :
|
||||
|
||||
<div lang="en-US">
|
||||
```c
|
||||
#define _GNU_SOURCE
|
||||
#include <fcntl.h>
|
||||
|
|
@ -271,12 +282,15 @@ int main(int argc, char *argv[])
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
```
|
||||
</div>
|
||||
|
||||
Dans un shell, on utilisera la commande `nsenter(1)` :
|
||||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
42sh# nsenter --uts=/proc/42/ns/uts /bin/bash
|
||||
```
|
||||
</div>
|
||||
|
||||
|
||||
### `docker exec`
|
||||
|
|
@ -310,10 +324,12 @@ termine.
|
|||
Lorsque l'on a besoin de référencer un *namespace* (par exemple pour le faire
|
||||
persister après le dernier processus), on peut utiliser un `mount bind` :
|
||||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
42sh# touch /tmp/ns/myrefns
|
||||
42sh# mount --bind /proc/<PID>/ns/mount /tmp/ns/myrefns
|
||||
```
|
||||
</div>
|
||||
|
||||
De cette manière, même si le lien initial n'existe plus (si le `<PID>` s'est
|
||||
terminé), `/tmp/ns/myrefns` pointera toujours au bon endroit.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue