1
0
mirror of https://github.com/containers/youki synced 2024-11-22 17:02:00 +01:00

fix tutorial in readme

This commit is contained in:
yukang 2021-08-25 13:59:21 +00:00
parent 14856066b1
commit bc69788d79
2 changed files with 39 additions and 14 deletions

4
.gitignore vendored

@ -1,6 +1,8 @@
youki
/tutorial
/rootfs
.idea/
**/target
@ -9,4 +11,6 @@ youki
tags
tags.lock
tags.temp
/config.json

@ -90,32 +90,52 @@ $ ./youki -h # you can get information about youki command
## Tutorial
Let's try to run a container that executes `sleep 5` using youki.
Maybe this tutorial is need permission as root.
Let's try to run a container that executes `sleep 30` with youki. This tutorial may need root permission.
```sh
$ git clone git@github.com:containers/youki.git
$ cd youki
$ ./build.sh
$ mkdir tutorial
$ cd tutorial
$ mkdir rootfs
# use docker to export busybox into the rootfs directory
$ docker export $(docker create busybox) | tar -C rootfs -xvf -
```
Prepare a configuration file for the container that will run `sleep 5`.
Then, we need to prepare a configuration file. This file contains metadata and specs for a container, such as the process to run, environment variables to inject, sandboxing features to use, etc.
```sh
$ curl https://gist.githubusercontent.com/utam0k/8ab419996633066eaf53ac9c66d962e7/raw/e81548f591f26ec03d85ce38b0443144573b4cf6/config.json -o config.json
$ cd ../
$ ./youki create -b tutorial tutorial_container
$ ./youki state tutorial_container # You can see the state the container is in as it is being generate.
$ ./youki start tutorial_container
$ ./youki state tutorial_container # Run it within 5 seconds to see the running container.
$ ./youki delete tutorial_container # Run it after the container is finished running.
$ ./youki spec # will generate a spec file named config.json
```
Change the command to be executed in config.json and try something other than `sleep 5`.
We can edit the `config.json` to add customized behaviors for container. Here, we modify the `process` field to run `sleep 30`.
```json
"process": {
"terminal": true,
"user": {
"uid": 0,
"gid": 0
},
"args": [
"sleep", "30"
],
...
}
```
Then we can explore the lifecycle of a container:
```sh
$ sudo ./youki create first-container # create a container with name `first-container`
$ sudo ./youki state first-container # you can see the state the container is `created`
$ sudo ./youki start first-container # start the container
$ sudo ./youki list # will show the list of containers, the container is `running`
$ sudo ./youki delete first-container # delete the container
```
Change the command to be executed in `config.json` and try something other than `sleep 30`.
## Usage
@ -171,8 +191,9 @@ $ git clone git@github.com:containers/youki.git
$ cd youki
$ vagrant up
$ vagrant ssh
# in virtual machine
$ cd youki # in virtual machine
$ cd youki
$ ./build.sh
```