Fix some book issues
This commit is contained in:
parent
6e135a40de
commit
3d8dd24b78
|
@ -1,5 +1,5 @@
|
|||
L'isolation ... à 1 € ?
|
||||
-----------------------
|
||||
L'isolation ... avec `chroot`
|
||||
-----------------------------
|
||||
|
||||
Depuis les premières versions d'Unix, il est possible de changer le répertoire
|
||||
vu comme étant la racine du système de fichiers. En anglais : *change root*:
|
||||
|
|
|
@ -55,7 +55,7 @@ ce sujet :\
|
|||
|
||||
::::: {.exercice}
|
||||
|
||||
#### À vous de jouer {-}
|
||||
#### À vous de jouer {-}
|
||||
|
||||
Continuons l'exercice précédent où nous avions [fixé les
|
||||
limites](#Fixer-des-limites) de mémoire que pouvez réserver les processus de
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
\newpage
|
||||
|
||||
::::: {.exercice}
|
||||
|
||||
### Comparaison de *namespace* -- `cmpns.sh`
|
||||
|
@ -31,6 +29,7 @@ que l'on cherche à comparer.
|
|||
- uts: same
|
||||
```
|
||||
</div>
|
||||
\
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
|
|
|
@ -19,32 +19,32 @@ Pour savoir si vous avez réussi, comparez les sorties des commandes :
|
|||
- ...
|
||||
|
||||
|
||||
### Tests {-}
|
||||
Voici quelques exemples pour tester :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
42sh$ docker run --name mywebserver -d -p 80:80 nginx
|
||||
42sh$ docker run --name mywebsrv -d -p 80:80 nginx
|
||||
d63ceae863956f8312aca60b7a57fbcc1fdf679ae4c90c5d9455405005d4980a
|
||||
42sh$ docker container inspect --format '{{ .State.Pid }}' mywebserver
|
||||
42sh$ docker container inspect --format '{{ .State.Pid }}' mywebsrv
|
||||
234269
|
||||
|
||||
42sh# ./mydocker_exec mywebserver ip address
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group def
|
||||
42sh# ./mydocker_exec mywebsrv ip address
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
inet 127.0.0.1/8 scope host lo
|
||||
valid_lft forever preferred_lft forever
|
||||
13: eth0@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP group def
|
||||
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
|
||||
13: eth0@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
|
||||
link/ether 02:42:ac:11:00:02 brd ff:[...]:ff link-netnsid 0
|
||||
inet 172.17.0.1/16 scope global eth0
|
||||
valid_lft forever preferred_lft forever
|
||||
|
||||
42sh# hostname
|
||||
koala.zoo.paris
|
||||
42sh# ./mydocker_exec mywebserver hostname
|
||||
42sh# ./mydocker_exec mywebsrv hostname
|
||||
d63ceae86395
|
||||
|
||||
42sh# ./mydocker_exec mywebserver mount
|
||||
42sh# ./mydocker_exec mywebserver ps aux
|
||||
42sh# ./mydocker_exec mywebsrv mount
|
||||
42sh# ./mydocker_exec mywebsrv ps aux
|
||||
...
|
||||
```
|
||||
</div>
|
||||
|
|
|
@ -22,7 +22,7 @@ Nous allons voir dans cette partie plusieurs méthodes pour utiliser ces espaces
|
|||
de noms.
|
||||
|
||||
|
||||
#### Avec son coquillage
|
||||
#### Dans son shell
|
||||
|
||||
De la même manière que l'on peut utiliser l'appel système `chroot(2)` depuis un
|
||||
shell via la commande `chroot(1)`, la commande `unshare(1)` permet de faire le
|
||||
|
@ -94,10 +94,11 @@ static char child_stack[STACKSIZE];
|
|||
|
||||
int clone_flags = CLONE_CGROUP | CLONE_NEWNET | SIGCHLD;
|
||||
|
||||
pid_t pid = clone(do_execvp, // First function executed by child
|
||||
child_stack + STACKSIZE, // Assume stack grows downward
|
||||
clone_flags, // clone specials flags
|
||||
args); // Arguments to pass to do_execvp
|
||||
pid_t pid = clone(do_execvp, // First function executed by child
|
||||
child_stack + STACKSIZE, // Assume stack grows downward
|
||||
clone_flags, // clone specials flags
|
||||
args); // Arguments to pass to
|
||||
// do_execvp
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -33,31 +33,31 @@ d'avoir une vision arborescente des points de montage en cours d'utilisation.
|
|||
<div lang="en-US">
|
||||
```
|
||||
TARGET SOURCE FSTYPE OPTIONS
|
||||
/ /dev/sda1 ext4 rw,relatime,data=ordered
|
||||
/proc proc proc rw,nosuid,nodev,noexec,relatime
|
||||
/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
|
||||
├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
|
||||
/ /dev/sda1 ext4 rw,data=ordered,...
|
||||
/proc proc proc rw,nosuid,nodev,...
|
||||
/sys sysfs sysfs rw,nosuid,nodev,...
|
||||
├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,...
|
||||
├─/sys/firmware/efi/efivars efivarfs efivarfs ro,relatime
|
||||
└─/sys/fs/cgroup cgroup_root tmpfs rw,nosuid,nodev,noexec,relatime
|
||||
├─/sys/fs/cgroup/unified none cgroup2 rw,nosuid,nodev,noexec,relatime
|
||||
├─/sys/fs/cgroup/cpuset cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset
|
||||
├─/sys/fs/cgroup/cpu cpu cgroup rw,nosuid,nodev,noexec,relatime,cpu
|
||||
├─/sys/fs/cgroup/cpuacct cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct
|
||||
├─/sys/fs/cgroup/blkio blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio
|
||||
├─/sys/fs/cgroup/memory memory cgroup rw,nosuid,nodev,noexec,relatime,memory
|
||||
├─/sys/fs/cgroup/devices devices cgroup rw,nosuid,nodev,noexec,relatime,devices
|
||||
├─/sys/fs/cgroup/freezer freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer
|
||||
├─/sys/fs/cgroup/net_cls net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls
|
||||
├─/sys/fs/cgroup/perf_event perf_event cgroup rw,nosuid,nodev,noexec,relatime,p_event
|
||||
├─/sys/fs/cgroup/net_prio net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_pri
|
||||
└─/sys/fs/cgroup/pids pids cgroup rw,nosuid,nodev,noexec,relatime,pids
|
||||
/dev devtmpfs devtmpfs rw,nosuid,size=10240k,nr_inodes=486250
|
||||
├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,ptmxmod
|
||||
└─/sys/fs/cgroup cgroup_root tmpfs rw,nosuid,...
|
||||
├─/sys/fs/cgroup/unified none cgroup2 rw,nsdelegate,...
|
||||
├─/sys/fs/cgroup/cpuset cpuset cgroup rw,nosuid,cpuset,...
|
||||
├─/sys/fs/cgroup/cpu cpu cgroup rw,nosuid,cpu,...
|
||||
├─/sys/fs/cgroup/cpuacct cpuacct cgroup rw,nosuid,cpuacct,...
|
||||
├─/sys/fs/cgroup/blkio blkio cgroup rw,nosuid,blkio,...
|
||||
├─/sys/fs/cgroup/memory memory cgroup rw,nosuid,memory,...
|
||||
├─/sys/fs/cgroup/devices devices cgroup rw,nosuid,devices,...
|
||||
├─/sys/fs/cgroup/freezer freezer cgroup rw,nosuid,freezer,...
|
||||
├─/sys/fs/cgroup/net_cls net_cls cgroup rw,nosuid,net_cls,...
|
||||
├─/sys/fs/cgroup/perf_event perf_event cgroup rw,nosuid,p_event,...
|
||||
├─/sys/fs/cgroup/net_prio net_prio cgroup rw,nosuid,net_pri,...
|
||||
└─/sys/fs/cgroup/pids pids cgroup rw,nosuid,pids,...
|
||||
/dev devtmpfs devtmpfs rw,nosuid,size=...
|
||||
├─/dev/pts devpts devpts rw,nosuid,gid=5,...
|
||||
├─/dev/shm tmpfs tmpfs rw
|
||||
└─/dev/mqueue mqueue mqueue rw,nosuid,nodev,noexec,relatime
|
||||
/home /dev/sda3 ext4 rw,nosuid,nodev,relatime,data=ordered
|
||||
/run tmpfs tmpfs rw,nosuid,nodev,noexec,mode=755
|
||||
/tmp tmpfs tmpfs rw,nosuid,nodev,noexec,relatime
|
||||
└─/dev/mqueue mqueue mqueue rw,nosuid,nodev,...
|
||||
/home /dev/sda3 ext4 rw,nosuid,nodev,...
|
||||
/run tmpfs tmpfs rw,mode=755,...
|
||||
/tmp tmpfs tmpfs rw,nosuid,nodev,...
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -28,16 +28,16 @@ pointent pas vers une destination valide :
|
|||
<div lang="en-US">
|
||||
```bash
|
||||
42sh$ ls -l /proc/self/ns
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 cgroup -> 'cgroup:[4026531835]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 ipc -> 'ipc:[4026531839]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 mnt -> 'mnt:[4026531840]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 net -> 'net:[4026532008]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 pid -> 'pid:[4026531836]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 pid_for_children -> 'pid:[4026531836]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 time -> 'time:[4026531834]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 time_for_children -> 'time:[4026531834]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 user -> 'user:[4026531837]'
|
||||
lrwxrwxrwx 1 nemunaire 0 1 oct. 23:42 uts -> 'uts:[4026531838]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 cgroup -> 'cgroup:[4026531835]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 ipc -> 'ipc:[4026531839]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 mnt -> 'mnt:[4026531840]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 net -> 'net:[4026532008]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 pid -> 'pid:[4026531836]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 pid_for_children -> 'pid:[4026531836]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 time -> 'time:[4026531834]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 time_for_children -> 'time:[4026531834]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 user -> 'user:[4026531837]'
|
||||
lrwxrwxrwx 1 nemunaire 1 oct. 23:42 uts -> 'uts:[4026531838]'
|
||||
|
||||
```
|
||||
</div>
|
||||
|
|
|
@ -99,7 +99,8 @@ des groupes au lieu des utilisateurs.
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
42sh$ unshare --mount --pid --mount-proc --fork --net --user --map-root-user bash
|
||||
42sh$ unshare --mount --pid --mount-proc --fork --net --user \
|
||||
--map-root-user bash
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -28,7 +28,8 @@ comme suit :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker run --rm -d --name registry --network droneci -p 5000:5000 registry:2
|
||||
docker run --rm -d --name registry --network droneci -p 5000:5000 \
|
||||
registry:2
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -24,10 +24,10 @@ Lançons enfin Drone avec les deux commandes suivantes :
|
|||
```shell
|
||||
docker volume create drone_data
|
||||
|
||||
docker container run --name droneci -d -v drone_data:/data --network my_ci_net
|
||||
docker container run --name droneci -v drone_data:/data --network my_ci_net
|
||||
-p 80:80 -e DRONE_GITEA_CLIENT_ID -e DRONE_GITEA_CLIENT_SECRET \
|
||||
-e DRONE_GITEA_SERVER=http://gitea:3000 -e DRONE_SERVER_PROTO=http \
|
||||
-e DRONE_RPC_SECRET -e DRONE_SERVER_HOST=droneci \
|
||||
-e DRONE_RPC_SECRET -e DRONE_SERVER_HOST=droneci -d \
|
||||
drone/drone:2
|
||||
```
|
||||
</div>
|
||||
|
|
|
@ -4,4 +4,4 @@ Vous serez automatiquement redirigé vers la page d'authentification de Gitea,
|
|||
puis vers l'autorisation OAuth d'accès de Drone à Gitea. Il faut bien
|
||||
évidemment valider cette demande, afin que Drone ait accès à nos dépôts.
|
||||
|
||||
![OAuth Drone](oauth-drone.png){width=9cm}
|
||||
![OAuth Drone](oauth-drone.png){width=7.6cm}
|
||||
|
|
|
@ -5,9 +5,9 @@ Voici La ligne de commande permettant de démarrer notre agent :
|
|||
<div lang="en-US">
|
||||
```shell
|
||||
docker container run --name droneci-runner -d --network my_ci_net \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock -e DRONE_RPC_PROTO=http
|
||||
-e DRONE_RPC_HOST=droneci -e DRONE_RPC_SECRET -e DRONE_RUNNER_CAPACITY=2 \
|
||||
-e DRONE_RUNNER_NAME=my-runner -e DRONE_RUNNER_NETWORKS=my_ci_net \
|
||||
drone/drone-runner-docker:1
|
||||
-v /var/run/docker.sock:/var/run/docker.sock -e DRONE_RUNNER_CAPACITY=2 \
|
||||
-e DRONE_RPC_HOST=droneci -e DRONE_RPC_SECRET -e DRONE_RPC_PROTO=http \
|
||||
-e DRONE_RUNNER_NAME=my-runner -e DRONE_RUNNER_NETWORKS=my_ci_net \
|
||||
drone/drone-runner-docker:1
|
||||
```
|
||||
</div>
|
||||
|
|
|
@ -23,11 +23,11 @@ Pour finir, lançons notre conteneur `gitea` :
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
docker container run --name gitea --network my_ci_net -p 2222:22 -p 3000:3000 \
|
||||
-v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro \
|
||||
-v gitea-data:/data \
|
||||
-e RUN_MODE=prod -e DOMAIN=gitea -e SSH_DOMAIN=gitea -e INSTALL_LOCK=true \
|
||||
-e SECRET_KEY -d \
|
||||
docker container run --name gitea --network my_ci_net -p 2222:22 \
|
||||
-p 3000:3000 -v /etc/localtime:/etc/localtime:ro -v gitea-data:/data \
|
||||
-v /etc/timezone:/etc/timezone:ro \
|
||||
-e RUN_MODE=prod -e DOMAIN=gitea -e SSH_DOMAIN=gitea \
|
||||
-e INSTALL_LOCK=true -e SECRET_KEY -d \
|
||||
gitea/gitea:1
|
||||
```
|
||||
</div>
|
||||
|
|
|
@ -8,7 +8,7 @@ Vous pouvez ajouter un nouvel administrateur avec la commande suivante :
|
|||
<div lang="en-US">
|
||||
```bash
|
||||
docker exec gitea gitea admin user create --username "${USER}" --admin \
|
||||
--must-change-password=false --random-password --email "${USER}@example.com"
|
||||
--must-change-password=false --random-password --email "${USER}@exmpl.tf"
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -206,7 +206,7 @@ si besoin.
|
|||
|
||||
::::: {.warning}
|
||||
|
||||
la page d'accueil est vide au démarrage, pour savoir si vous avez réussi,
|
||||
La page d'accueil est vide au démarrage, pour savoir si vous avez réussi,
|
||||
rendez-vous sous l'onglet *Hosts*, le nom de votre machine devrait y
|
||||
apparaître. En cliquant dessus, vous obtiendrez des graphiques similaires à
|
||||
ceux ci-après :
|
||||
|
|
|
@ -20,9 +20,9 @@ cours d'exécution, arrêtés, ...) avec la commande suivante :
|
|||
<div lang="en-US">
|
||||
```
|
||||
42sh$ docker container ls -a
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
|
||||
552d71619723 hello-world "/hello" 4 days ago Exited (0) 4 days ago dreamy_g
|
||||
0e8bbff6d500 debian "/bin/bash" 2 weeks ago Exited (0) 2 weeks ago cranky_j
|
||||
CONTAINER ID IMAGE CREATED STATUS NAMES
|
||||
552d71619723 hello-world 4 days ago Exited (0) 4 days ago dreamy_g
|
||||
0e8bbff6d500 debian 2 weeks ago Exited (0) 2 weeks ago cranky_j
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -48,7 +48,8 @@ utiliser cette syntaxe pour ajouter une image :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
base64 monimage.jpg | curl --data @- http://localhost:8080/api/images/monimage
|
||||
base64 monimage.jpg | \
|
||||
curl --data @- http://localhost:8080/api/images/monimage
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -285,7 +285,8 @@ Par exemple :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker -H unix:///run/docker.sock container run -it alpine /bin/ash -c "echo foo"
|
||||
docker -H unix:///run/docker.sock container run -it alpine /bin/ash -c \
|
||||
"echo foo"
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -305,8 +306,8 @@ conteneurs en cours d'exécution :
|
|||
<div lang="en-US">
|
||||
```
|
||||
42sh$ docker container ls
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
4c39fc049cd1 ubuntu "/bin/bash" 6 minutes ago Up 5 minutes bold_gates
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
|
||||
4c39fc049cd1 ubuntu "/bin/bash" 6 minutes ago Up 5 minutes bold_gates
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
À vous maintenant de connecter une instance de `nemunaire/fic-admin` à sa base
|
||||
de données.
|
||||
|
||||
En lançant le conteneur avec les mêmes options que `youp0m`, les journaux
|
||||
indiquent que le service cherche à se connecter à une base de données. Il va
|
||||
donc falloir lier notre interface d'administration à [un conteneur
|
||||
MariaDB](https://hub.docker.com/_/mariadb).
|
||||
|
||||
Ne vous embêtez pas avec les mots de passes des services, initialisez la base
|
||||
de données avec le nom d'utilisateur et le mot de passe par défaut. Vous les
|
||||
obtiendrez en lisant la documentation de l'image fic-admin :
|
||||
|
@ -30,7 +35,7 @@ plusieurs fois, sans que les données ne soient perdues, entre deux
|
|||
arrêts.
|
||||
|
||||
|
||||
### Exemple d'exécution
|
||||
### Exemple d'exécution {-}
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
|
@ -16,16 +16,7 @@ conteneur : en effet, on peut vouloir mettre à jour l'applicatif sans pour
|
|||
autant redémarrer sa base de données, etc. Nous allons donc voir dans cette
|
||||
partie comment lier deux conteneurs.
|
||||
|
||||
|
||||
## Mise en place du webservice
|
||||
|
||||
Nous allons utiliser l'interface d'administration des serveurs du FIC :
|
||||
[`nemunaire/fic-admin`](https://hub.docker.com/r/nemunaire/fic-admin).
|
||||
|
||||
En lançant le conteneur avec les mêmes options que `youp0m`, les journaux
|
||||
indiquent que le service cherche à se connecter à une base de données. Il va
|
||||
donc falloir lier notre interface d'administration à [un conteneur
|
||||
MariaDB](https://hub.docker.com/_/mariadb).
|
||||
Mais avant, regardons d'un peu plus près la gestion des réseaux par Docker.
|
||||
|
||||
|
||||
## Les pilotes réseau
|
||||
|
|
|
@ -63,7 +63,8 @@ Ensuite, nous pouvons démarrer un conteneur utilisant, par exemple :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run --mount source=prod_youp0m,target=/images nemunaire/youp0m
|
||||
docker container run --mount source=prod_youp0m,target=/images \
|
||||
nemunaire/youp0m
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -71,8 +72,9 @@ On pourra également faire de même avec un conteneur MySQL :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run --name mydb --mount source=prod_db,target=/var/lib/mysql \
|
||||
-e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
|
||||
docker container run --name mydb -e MYSQL_ROOT_PASSWORD=my-secret-pw \
|
||||
--mount source=prod_db,target=/var/lib/mysql\
|
||||
mysql
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -79,8 +79,8 @@ aussi en envoyer.
|
|||
|
||||
Si maintenant `docker` fait appel à un programme externe pour lancer
|
||||
effectivement nos conteneurs, c'est que l'on peut changer cette implémentation
|
||||
? la réponse dans l'article :
|
||||
? la réponse dans l'article :\
|
||||
<https://ops.tips/blog/run-docker-with-forked-runc/>
|
||||
|
||||
Et `containerd` dans l'histoire ?
|
||||
Et `containerd` dans l'histoire ?\
|
||||
<https://hackernoon.com/docker-containerd-standalone-runtimes-heres-what-you-should-know-b834ef155426>
|
||||
|
|
|
@ -34,7 +34,7 @@ lang="en-US">`repository:hello-world:pull`</span>). Ce qui nous donne :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
42sh$ curl "https://auth.docker.io/token?service=registry.docker.io&"\
|
||||
42sh$ curl "https://auth.docker.io/token?service=registry.docker.io&" \
|
||||
"scope=repository:library/hello-world:pull" | jq .
|
||||
```
|
||||
```json
|
||||
|
@ -98,7 +98,8 @@ système d'exploitation :
|
|||
curl -s \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
-H "Accept: ${MEDIATYPE}" \
|
||||
"https://registry-1.docker.io/v2/library/hello-world/manifests/${MNFST_DGST}"
|
||||
"https://registry-1.docker.io/v2/library/hello-world/manifests/
|
||||
${MNFST_DGST}"
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -119,7 +120,7 @@ Pour récupérer la configuration de l'image :
|
|||
```bash
|
||||
curl -s --location \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
"https://registry-1.docker.io/v2/library/hello-world/blobs/${CONFIG_DIGEST}"
|
||||
"https://registry-1.docker.io/v2/library/hello-world/blobs/${CNF_DIGEST}"
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -129,7 +130,7 @@ Enfin, armé du `digest` de notre couche, il ne nous reste plus qu'à la demande
|
|||
<div lang="en-US">
|
||||
```bash
|
||||
wget --header "Authorization: Bearer ${TOKEN}" \
|
||||
"https://registry-1.docker.io/v2/library/hello-world/blobs/${LAYER_DIGEST}"
|
||||
"https://registry-1.docker.io/v2/library/hello-world/blobs/${LAYER_DGST}"
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ runc spec
|
|||
```
|
||||
</div>
|
||||
|
||||
Pour savoir à quoi correspondent tous ces éléments, vous pouvez consulter :
|
||||
Pour savoir à quoi correspondent tous ces éléments, vous pouvez consulter :\
|
||||
<https://github.com/opencontainers/runtime-spec/blob/master/config.md>
|
||||
|
||||
Rassurez-vous, il n'y a que très peu de champs à modifier.
|
||||
|
|
|
@ -131,10 +131,10 @@ Testing mysql...
|
|||
✗ High severity vulnerability found in gcc-8/libstdc++6
|
||||
Description: Insufficient Entropy
|
||||
Info: https://snyk.io/vuln/SNYK-DEBIAN10-GCC8-469413
|
||||
Introduced through: apt@1.8.2.3, mysql-community/mysql-community-client@[...]
|
||||
Introduced through: apt@1.8.2.3, mysql-community/mysql-client@[...]
|
||||
From: apt@1.8.2.3 > gcc-8/libstdc++6@8.3.0-6
|
||||
From: mysql-community/mysql-community-client@8.0.26-1debian10 > gcc-8[...]
|
||||
From: mysql-community/mysql-community-server-core@8.0.26-1debian10 > gcc-8[...]
|
||||
From: mysql-community/mysql-client@8.0.26-1debian10 > gcc-8[...]
|
||||
From: mysql-community/mysql-server-core@8.0.26-1debian10 > gcc-8[...]
|
||||
and 7 more...
|
||||
Image layer: Introduced by your base image (mysql:8.0.26)
|
||||
|
||||
|
@ -144,7 +144,7 @@ Docker image: mysql
|
|||
Platform: linux/amd64
|
||||
Base image: mysql:8.0.26
|
||||
|
||||
Tested 135 dependencies for known vulnerabilities, found 79 vulnerabilities.
|
||||
Tested 135 dependencies for known vulnerabilities, found 79 vulnerabilities
|
||||
|
||||
According to our scan, you are currently using the most secure version of
|
||||
the selected base image
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
\newpage
|
||||
|
||||
Ma première image ... par `Dockerfile`
|
||||
--------------------------------------
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ ENTRYPOINT ["/bin/echo", "Hello"]
|
|||
Nous obtenons les résultats suivants :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
```
|
||||
42sh$ docker run sample-echo
|
||||
Hello world
|
||||
```
|
||||
|
@ -50,7 +50,7 @@ commande exécutée est :
|
|||
Essayons maintenant avec des arguments :
|
||||
|
||||
<div lang="en-US">
|
||||
```sh
|
||||
```
|
||||
42sh$ docker run sample-echo $USER
|
||||
Hello neo
|
||||
```
|
||||
|
@ -64,7 +64,7 @@ Si l'on a besoin d'exécuter un `ENTRYPOINT`{.dockerfile} différent, il reste l
|
|||
possibilité de le surcharger au moyen d'un argument :
|
||||
|
||||
<div lang="en-US">
|
||||
```sh
|
||||
```
|
||||
42sh$ docker run --entrypoint /bin/sh sample-echo
|
||||
01abc345# _
|
||||
```
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
\newpage
|
||||
|
||||
D'autres méthodes pour créer des images
|
||||
---------------------------------------
|
||||
|
||||
|
|
|
@ -60,5 +60,5 @@ version. Kubernetes verra la différence et appliquera une politique de
|
|||
migration déterminée.
|
||||
|
||||
Une fois que c'est fait, nous pouvons fièrement utiliser notre navigateur pour
|
||||
aller sur <http://localhost:30002/> (vous pouvez *Skip* l'authentification,
|
||||
aller sur l'adresse <http://localhost:30002/> (vous pouvez *Skip* l'authentification,
|
||||
dans cette configuration d'exemple, elle n'est pas nécessaire).
|
||||
|
|
|
@ -129,7 +129,7 @@ besoins en termes de réseau.
|
|||
|
||||
Ainsi, à la création d'un conteneur, Kubernetes va laisser aux plugins CNI le
|
||||
loisir d'allouer l'adresse IP, d'ajouter les interfaces réseaux adéquates, de
|
||||
configurer les routes, les règles de pare-feu, ...
|
||||
configurer les routes, les règles de pare-feu, ...
|
||||
|
||||
|
||||
### Pour aller plus loin
|
||||
|
|
Loading…
Reference in New Issue
Block a user