Remove containerd files
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
parent
992fdbfd76
commit
e115b52ce2
74 changed files with 0 additions and 9757 deletions
|
@ -1,6 +0,0 @@
|
|||
# API
|
||||
|
||||
The API for containerd is with GRPC over a unix socket located at the default location of `/run/containerd/containerd.sock`.
|
||||
|
||||
At this time please refer to the [proto at](https://github.com/docker/containerd/blob/master/api/grpc/types/api.proto) for the API methods and types.
|
||||
There is a Go implementation and types checked into this repository but alternate language implementations can be created using the grpc and protoc toolchain.
|
|
@ -1,36 +0,0 @@
|
|||
# Attaching to STDIO or TTY
|
||||
|
||||
The model for STDIO, TTY, and logging is a little different in containerd.
|
||||
Because of the various methods that consumers want on the logging side these types of decisions
|
||||
are pushed to the client.
|
||||
Containerd API is developed for access on a single host therefore many things like paths on the host system are acceptable in the API.
|
||||
For the STDIO model the client requesting to start a container provides the paths for the IO.
|
||||
|
||||
## Logging
|
||||
|
||||
If no options are specified on create all STDIO of the processes launched by containerd will be sent to `/dev/null`.
|
||||
If you want containerd to send the STDIO of the processes to a file, you can pass paths to the files in the create container method defined by this proto in the stdin, stdout, and stderr fields:
|
||||
|
||||
```proto
|
||||
message CreateContainerRequest {
|
||||
string id = 1; // ID of container
|
||||
string bundlePath = 2; // path to OCI bundle
|
||||
string stdin = 3; // path to the file where stdin will be read (optional)
|
||||
string stdout = 4; // path to file where stdout will be written (optional)
|
||||
string stderr = 5; // path to file where stderr will be written (optional)
|
||||
string console = 6; // path to the console for a container (optional)
|
||||
string checkpoint = 7; // checkpoint name if you want to create immediate checkpoint (optional)
|
||||
}
|
||||
```
|
||||
|
||||
## Attach
|
||||
|
||||
In order to have attach like functionality for your containers you use the same API request but named pipes or fifos can be used to achieve this type of functionality.
|
||||
The default CLI for containerd does this if you specify the `--attach` flag on `create` or `start`.
|
||||
It will create fifos for each of the containers stdio which the CLI can read and write to.
|
||||
This can be used to create an interactive session with the container, `bash` for example, or to have a blocking way to collect the container's STDIO and forward it to your logging facilities.
|
||||
|
||||
## TTY
|
||||
|
||||
The tty model is the same as above only the client creates a pty and provides to other side to containerd in the create request in the `console` field.
|
||||
Containerd will provide the pty to the container to use and the session can be opened with the container after it starts.
|
|
@ -1,12 +0,0 @@
|
|||
# containerd changes to the bundle
|
||||
|
||||
Containerd will make changes to the container's bundle by adding additional files or folders by default with
|
||||
options to change the output.
|
||||
|
||||
The current change that it makes is if you create a checkpoint of a container, the checkpoints will be saved
|
||||
by default in the container bundle at `{bundle}/checkpoints/{checkpoint name}`.
|
||||
A user can also populate this directory and provide the checkpoint name on the create request so that the container is started from this checkpoint.
|
||||
|
||||
|
||||
As of this point, containerd has no other additions to the bundle.
|
||||
Runtime state is currently stored in a tmpfs filesystem like `/run`.
|
208
docs/bundle.md
208
docs/bundle.md
|
@ -1,208 +0,0 @@
|
|||
# Creating OCI bundles
|
||||
|
||||
Since containerd consumes the OCI bundle format containers and configuration will have to be created
|
||||
on the machine that containerd is running on. The easiest way to do this is to download an image
|
||||
with docker and export it.
|
||||
|
||||
|
||||
## Setup
|
||||
|
||||
First thing we need to do to create a bundle is setup the initial directory structure.
|
||||
Create a directory with a unique name. In this example we will create a redis container.
|
||||
We will create this container in a `/containers` directory.
|
||||
|
||||
|
||||
```bash
|
||||
mkdir redis
|
||||
```
|
||||
|
||||
Inside the `redis` directory create another directory named `rootfs`
|
||||
|
||||
```bash
|
||||
mkdir redis/rootfs
|
||||
```
|
||||
|
||||
## Root Filesystem
|
||||
|
||||
Now we need to populate the `rootfs` directory with the filesystem of a redis container. To do this we
|
||||
need to pull the redis image with docker and export its contents to the `rootfs` directory.
|
||||
|
||||
```bash
|
||||
docker pull redis
|
||||
|
||||
# create the container with a temp name so that we can export it
|
||||
docker create --name tempredis redis
|
||||
|
||||
# export it into the rootfs directory
|
||||
docker export tempredis | tar -C redis/rootfs -xf -
|
||||
|
||||
# remove the container now that we have exported
|
||||
docker rm tempredis
|
||||
```
|
||||
|
||||
Now that we have the root filesystem populated we need to create the configs for the container.
|
||||
|
||||
## Configs
|
||||
|
||||
An easy way to get temp configs for the container bundle is to use the `runc`
|
||||
cli tool from the [runc](https://github.com/opencontainers/runc) repository.
|
||||
|
||||
|
||||
You need to `cd` into the `redis` directory and run the `runc spec` command. After doing this you
|
||||
should have a file `config.json` created. The directory structure should look like this:
|
||||
|
||||
```
|
||||
/containers/redis
|
||||
├── config.json
|
||||
└── rootfs/
|
||||
```
|
||||
|
||||
## Edits
|
||||
|
||||
We need to edit the config to add `redis-server` as the application to launch inside the container,
|
||||
and remove the network namespace so that you can connect to the redis server on your system.
|
||||
The resulting `config.json` should look like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"ociVersion": "0.4.0",
|
||||
"platform": {
|
||||
"os": "linux",
|
||||
"arch": "amd64"
|
||||
},
|
||||
"process": {
|
||||
"terminal": true,
|
||||
"user": {},
|
||||
"args": [
|
||||
"redis-server", "--bind", "0.0.0.0"
|
||||
],
|
||||
"env": [
|
||||
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
||||
"TERM=xterm"
|
||||
],
|
||||
"cwd": "/",
|
||||
"capabilities": [
|
||||
"CAP_AUDIT_WRITE",
|
||||
"CAP_KILL",
|
||||
"CAP_NET_BIND_SERVICE"
|
||||
],
|
||||
"rlimits": [
|
||||
{
|
||||
"type": "RLIMIT_NOFILE",
|
||||
"hard": 1024,
|
||||
"soft": 1024
|
||||
}
|
||||
],
|
||||
"noNewPrivileges": true
|
||||
},
|
||||
"root": {
|
||||
"path": "rootfs",
|
||||
"readonly": true
|
||||
},
|
||||
"hostname": "runc",
|
||||
"mounts": [
|
||||
{
|
||||
"destination": "/proc",
|
||||
"type": "proc",
|
||||
"source": "proc"
|
||||
},
|
||||
{
|
||||
"destination": "/dev",
|
||||
"type": "tmpfs",
|
||||
"source": "tmpfs",
|
||||
"options": [
|
||||
"nosuid",
|
||||
"strictatime",
|
||||
"mode=755",
|
||||
"size=65536k"
|
||||
]
|
||||
},
|
||||
{
|
||||
"destination": "/dev/pts",
|
||||
"type": "devpts",
|
||||
"source": "devpts",
|
||||
"options": [
|
||||
"nosuid",
|
||||
"noexec",
|
||||
"newinstance",
|
||||
"ptmxmode=0666",
|
||||
"mode=0620",
|
||||
"gid=5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"destination": "/dev/shm",
|
||||
"type": "tmpfs",
|
||||
"source": "shm",
|
||||
"options": [
|
||||
"nosuid",
|
||||
"noexec",
|
||||
"nodev",
|
||||
"mode=1777",
|
||||
"size=65536k"
|
||||
]
|
||||
},
|
||||
{
|
||||
"destination": "/dev/mqueue",
|
||||
"type": "mqueue",
|
||||
"source": "mqueue",
|
||||
"options": [
|
||||
"nosuid",
|
||||
"noexec",
|
||||
"nodev"
|
||||
]
|
||||
},
|
||||
{
|
||||
"destination": "/sys",
|
||||
"type": "sysfs",
|
||||
"source": "sysfs",
|
||||
"options": [
|
||||
"nosuid",
|
||||
"noexec",
|
||||
"nodev",
|
||||
"ro"
|
||||
]
|
||||
},
|
||||
{
|
||||
"destination": "/sys/fs/cgroup",
|
||||
"type": "cgroup",
|
||||
"source": "cgroup",
|
||||
"options": [
|
||||
"nosuid",
|
||||
"noexec",
|
||||
"nodev",
|
||||
"relatime",
|
||||
"ro"
|
||||
]
|
||||
}
|
||||
],
|
||||
"hooks": {},
|
||||
"linux": {
|
||||
"resources": {
|
||||
"devices": [
|
||||
{
|
||||
"allow": false,
|
||||
"access": "rwm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"namespaces": [
|
||||
{
|
||||
"type": "pid"
|
||||
},
|
||||
{
|
||||
"type": "ipc"
|
||||
},
|
||||
{
|
||||
"type": "uts"
|
||||
},
|
||||
{
|
||||
"type": "mount"
|
||||
}
|
||||
],
|
||||
"devices": null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This is what you need to do to make a OCI compliant bundle for containerd to start.
|
159
docs/cli.md
159
docs/cli.md
|
@ -1,159 +0,0 @@
|
|||
# Client CLI
|
||||
|
||||
There is a default cli named `ctr` based on the GRPC api.
|
||||
This cli will allow you to create and manage containers run with containerd.
|
||||
|
||||
```
|
||||
$ ctr -h
|
||||
NAME:
|
||||
ctr - High performance container daemon cli
|
||||
|
||||
USAGE:
|
||||
ctr [global options] command [command options] [arguments...]
|
||||
|
||||
VERSION:
|
||||
0.1.0 commit: 54c213e8a719d734001beb2cb8f130c84cc3bd20
|
||||
|
||||
COMMANDS:
|
||||
checkpoints list all checkpoints
|
||||
containers interact with running containers
|
||||
events receive events from the containerd daemon
|
||||
state get a raw dump of the containerd state
|
||||
help, h Shows a list of commands or help for one command
|
||||
|
||||
GLOBAL OPTIONS:
|
||||
--debug enable debug output in the logs
|
||||
--address "/run/containerd/containerd.sock" address of GRPC API
|
||||
--help, -h show help
|
||||
--version, -v print the version
|
||||
```
|
||||
|
||||
## Starting a container
|
||||
|
||||
```
|
||||
$ ctr containers start -h
|
||||
NAME:
|
||||
ctr containers start - start a container
|
||||
|
||||
USAGE:
|
||||
ctr containers start [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--checkpoint, -c checkpoint to start the container from
|
||||
--attach, -a connect to the stdio of the container
|
||||
--label, -l [--label option --label option] set labels for the container
|
||||
```
|
||||
|
||||
```bash
|
||||
$ sudo ctr containers start redis /containers/redis
|
||||
```
|
||||
|
||||
`/containers/redis` is the path to an OCI bundle. [See the bundle docs for more information.](bundle.md)
|
||||
|
||||
## Listing containers
|
||||
|
||||
```bash
|
||||
$ sudo ctr containers
|
||||
ID PATH STATUS PROCESSES
|
||||
1 /containers/redis running 14063
|
||||
19 /containers/redis running 14100
|
||||
14 /containers/redis running 14117
|
||||
4 /containers/redis running 14030
|
||||
16 /containers/redis running 14061
|
||||
3 /containers/redis running 14024
|
||||
12 /containers/redis running 14097
|
||||
10 /containers/redis running 14131
|
||||
18 /containers/redis running 13977
|
||||
13 /containers/redis running 13979
|
||||
15 /containers/redis running 13998
|
||||
5 /containers/redis running 14021
|
||||
9 /containers/redis running 14075
|
||||
6 /containers/redis running 14107
|
||||
2 /containers/redis running 14135
|
||||
11 /containers/redis running 13978
|
||||
17 /containers/redis running 13989
|
||||
8 /containers/redis running 14053
|
||||
7 /containers/redis running 14022
|
||||
0 /containers/redis running 14006
|
||||
```
|
||||
|
||||
## Kill a container's process
|
||||
|
||||
```
|
||||
$ ctr containers kill -h
|
||||
NAME:
|
||||
ctr containers kill - send a signal to a container or its processes
|
||||
|
||||
USAGE:
|
||||
ctr containers kill [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--pid, -p "init" pid of the process to signal within the container
|
||||
--signal, -s "15" signal to send to the container
|
||||
```
|
||||
|
||||
## Exec another process into a container
|
||||
|
||||
```
|
||||
$ ctr containers exec -h
|
||||
NAME:
|
||||
ctr containers exec - exec another process in an existing container
|
||||
|
||||
USAGE:
|
||||
ctr containers exec [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--id container id to add the process to
|
||||
--pid process id for the new process
|
||||
--attach, -a connect to the stdio of the container
|
||||
--cwd current working directory for the process
|
||||
--tty, -t create a terminal for the process
|
||||
--env, -e [--env option --env option] environment variables for the process
|
||||
--uid, -u "0" user id of the user for the process
|
||||
--gid, -g "0" group id of the user for the process
|
||||
```
|
||||
|
||||
## Stats for a container
|
||||
|
||||
```
|
||||
$ ctr containers stats -h
|
||||
NAME:
|
||||
ctr containers stats - get stats for running container
|
||||
|
||||
USAGE:
|
||||
ctr containers stats [arguments...]
|
||||
```
|
||||
|
||||
## List checkpoints
|
||||
|
||||
```
|
||||
$ sudo ctr checkpoints redis
|
||||
NAME TCP UNIX SOCKETS SHELL
|
||||
test false false false
|
||||
test2 false false false
|
||||
```
|
||||
|
||||
## Create a new checkpoint
|
||||
|
||||
```
|
||||
$ ctr checkpoints create -h
|
||||
NAME:
|
||||
ctr checkpoints create - create a new checkpoint for the container
|
||||
|
||||
USAGE:
|
||||
ctr checkpoints create [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--tcp persist open tcp connections
|
||||
--unix-sockets perist unix sockets
|
||||
--exit exit the container after the checkpoint completes successfully
|
||||
--shell checkpoint shell jobs
|
||||
```
|
||||
|
||||
## Get events
|
||||
|
||||
```
|
||||
$ sudo ctr events
|
||||
TYPE ID PID STATUS
|
||||
exit redis 24761 0
|
||||
```
|
|
@ -1,27 +0,0 @@
|
|||
# Daemon options
|
||||
|
||||
```
|
||||
$ containerd -h
|
||||
|
||||
NAME:
|
||||
containerd - High performance container daemon
|
||||
|
||||
USAGE:
|
||||
containerd [global options] command [command options] [arguments...]
|
||||
|
||||
VERSION:
|
||||
0.1.0 commit: 54c213e8a719d734001beb2cb8f130c84cc3bd20
|
||||
|
||||
COMMANDS:
|
||||
help, h Shows a list of commands or help for one command
|
||||
|
||||
GLOBAL OPTIONS:
|
||||
--debug enable debug output in the logs
|
||||
--state-dir "/run/containerd" runtime state directory
|
||||
--metrics-interval "5m0s" interval for flushing metrics to the store
|
||||
--listen, -l "/run/containerd/containerd.sock" Address on which GRPC API will listen
|
||||
--runtime, -r "runc" name of the OCI compliant runtime to use when executing containers
|
||||
--graphite-address Address of graphite server
|
||||
--help, -h show help
|
||||
--version, -v print the version
|
||||
```
|
|
@ -1,31 +0,0 @@
|
|||
# Telemetry
|
||||
|
||||
Currently containerd only outputs metrics to stdout but will support dumping to various backends in the future.
|
||||
|
||||
```
|
||||
[containerd] 2015/12/16 11:48:28 timer container-start-time
|
||||
[containerd] 2015/12/16 11:48:28 count: 22
|
||||
[containerd] 2015/12/16 11:48:28 min: 25425883
|
||||
[containerd] 2015/12/16 11:48:28 max: 113077691
|
||||
[containerd] 2015/12/16 11:48:28 mean: 68386923.27
|
||||
[containerd] 2015/12/16 11:48:28 stddev: 20928453.26
|
||||
[containerd] 2015/12/16 11:48:28 median: 65489003.50
|
||||
[containerd] 2015/12/16 11:48:28 75%: 82393210.50
|
||||
[containerd] 2015/12/16 11:48:28 95%: 112267814.75
|
||||
[containerd] 2015/12/16 11:48:28 99%: 113077691.00
|
||||
[containerd] 2015/12/16 11:48:28 99.9%: 113077691.00
|
||||
[containerd] 2015/12/16 11:48:28 1-min rate: 0.00
|
||||
[containerd] 2015/12/16 11:48:28 5-min rate: 0.01
|
||||
[containerd] 2015/12/16 11:48:28 15-min rate: 0.01
|
||||
[containerd] 2015/12/16 11:48:28 mean rate: 0.03
|
||||
[containerd] 2015/12/16 11:48:28 counter containers
|
||||
[containerd] 2015/12/16 11:48:28 count: 1
|
||||
[containerd] 2015/12/16 11:48:28 counter events
|
||||
[containerd] 2015/12/16 11:48:28 count: 87
|
||||
[containerd] 2015/12/16 11:48:28 counter events-subscribers
|
||||
[containerd] 2015/12/16 11:48:28 count: 2
|
||||
[containerd] 2015/12/16 11:48:28 gauge goroutines
|
||||
[containerd] 2015/12/16 11:48:28 value: 38
|
||||
[containerd] 2015/12/16 11:48:28 gauge fds
|
||||
[containerd] 2015/12/16 11:48:28 value: 18
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue