Use lang en-US for samples

This commit is contained in:
nemunaire 2017-10-17 08:29:07 +02:00
commit 13dadd8c59
33 changed files with 318 additions and 0 deletions

View file

@ -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.