mirror of
https://github.com/linuxkit/linuxkit.git
synced 2026-04-03 18:25:59 +00:00
- split out config processing a bit - just use `capabilities` not `cap-add` and `cap-drop` - allow use of CAP_ prefix on capabilities, as this is what `runc` uses - add nginx to example config - fix bind mounts Signed-off-by: Justin Cormack <justin.cormack@docker.com>
70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
|
|
"gopkg.in/yaml.v2"
|
|
)
|
|
|
|
type Moby struct {
|
|
Kernel string
|
|
Init string
|
|
System []MobyImage
|
|
Database []struct {
|
|
File string
|
|
Value string
|
|
}
|
|
}
|
|
|
|
type MobyImage struct {
|
|
Name string
|
|
Image string
|
|
Capabilities []string
|
|
Binds []string
|
|
OomScoreAdj int64 `yaml:"oom_score_adj"`
|
|
Command []string
|
|
NetworkMode string `yaml:"network_mode"`
|
|
}
|
|
|
|
const riddler = "mobylinux/riddler:7d4545d8b8ac2700971a83f12a3446a76db28c14@sha256:11b7310df6482fc38aa52b419c2ef1065d7b9207c633d47554e13aa99f6c0b72"
|
|
|
|
func NewConfig(config []byte) (*Moby, error) {
|
|
m := Moby{}
|
|
|
|
err := yaml.Unmarshal(config, &m)
|
|
if err != nil {
|
|
return &m, err
|
|
}
|
|
|
|
return &m, nil
|
|
}
|
|
|
|
func ConfigToRun(image *MobyImage) []string {
|
|
// riddler arguments
|
|
args := []string{"run", "--rm", "-v", "/var/run/docker.sock:/var/run/docker.sock", riddler, image.Image, "/containers/" + image.Name}
|
|
// docker arguments
|
|
args = append(args, "--cap-drop", "all")
|
|
for _, cap := range image.Capabilities {
|
|
if strings.ToUpper(cap)[0:4] == "CAP_" {
|
|
cap = cap[4:]
|
|
}
|
|
args = append(args, "--cap-add", cap)
|
|
}
|
|
if image.OomScoreAdj != 0 {
|
|
args = append(args, "--oom-score-adj", strconv.FormatInt(image.OomScoreAdj, 10))
|
|
}
|
|
if image.NetworkMode != "" {
|
|
args = append(args, "--net", image.NetworkMode)
|
|
}
|
|
for _, bind := range image.Binds {
|
|
args = append(args, "-v", bind)
|
|
}
|
|
// image
|
|
args = append(args, image.Image)
|
|
// command
|
|
args = append(args, image.Command...)
|
|
|
|
return args
|
|
}
|