From 74e8502f3f142d999c495be1b7683dfe17701ac6 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 9 Oct 2016 18:58:32 +0200 Subject: [PATCH] - Fix .gitignore - Note about bug with Docker driver - Implement experimental pid ulimit of 150. --- .gitignore | 2 ++ services/docker.go | 8 ++++++++ services/session.go | 1 + 3 files changed, 11 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e253afb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +play-with-docker + diff --git a/services/docker.go b/services/docker.go index 9734c4e..c30408c 100644 --- a/services/docker.go +++ b/services/docker.go @@ -29,10 +29,14 @@ func GetContainerInfo(id string) (types.ContainerJSON, error) { } func CreateNetwork(name string) error { + // TODO: This line appears to give an error when running on localhost:3000 + // when driver is specified a name must be given. opts := types.NetworkCreate{Attachable: true, Driver: "overlay"} _, err := c.NetworkCreate(context.Background(), name, opts) if err != nil { + log.Printf("Starting session err [%s]\n", err) + return err } @@ -72,7 +76,11 @@ func AttachExecConnection(execId string, ctx context.Context) (*types.HijackedRe func CreateInstance(net string) (*ptypes.Instance, error) { + var maximumPidLimit int64 + maximumPidLimit = 150 // Set a ulimit value to prevent misuse h := &container.HostConfig{NetworkMode: container.NetworkMode(net), Privileged: true} + h.Resources.PidsLimit = maximumPidLimit + conf := &container.Config{Image: "docker:dind"} container, err := c.ContainerCreate(context.Background(), conf, h, nil, "") diff --git a/services/session.go b/services/session.go index 4c8ced6..6f82613 100644 --- a/services/session.go +++ b/services/session.go @@ -18,6 +18,7 @@ func NewSession() (*types.Session, error) { s := &types.Session{} s.Id = uuid.NewV4().String() s.Instances = map[string]*types.Instance{} + log.Printf("NewSession id=[%s]\n", s.Id) //TODO: Store in something like redis sessions[s.Id] = s