diff --git a/local/backend.go b/local/backend.go index 96c8f6749..65da9405d 100644 --- a/local/backend.go +++ b/local/backend.go @@ -171,6 +171,7 @@ func containerJSONToHostConfig(m *types.ContainerJSON) *containers.HostConfig { return &containers.HostConfig{ AutoRemove: m.HostConfig.AutoRemove, RestartPolicy: restartPolicy, + CPULimit: float64(m.HostConfig.Resources.NanoCPUs) / 1e9, } } @@ -216,6 +217,9 @@ func (ms *local) Run(ctx context.Context, r containers.ContainerConfig) error { hostConfig := &container.HostConfig{ PortBindings: hostBindings, AutoRemove: r.AutoRemove, + Resources: container.Resources{ + NanoCPUs: int64(r.CPULimit * 1e9), + }, } created, err := ms.apiClient.ContainerCreate(ctx, containerConfig, hostConfig, nil, r.ID) diff --git a/local/backend_test.go b/local/backend_test.go index 02a1b6dfb..101770c59 100644 --- a/local/backend_test.go +++ b/local/backend_test.go @@ -52,6 +52,9 @@ func TestToHostConfig(t *testing.T) { RestartPolicy: container.RestartPolicy{ Name: "", }, + Resources: container.Resources{ + NanoCPUs: 750000000, + }, }, } m := &types.ContainerJSON{ @@ -65,6 +68,7 @@ func TestToHostConfig(t *testing.T) { res := &containers.HostConfig{ AutoRemove: true, RestartPolicy: containers.RestartPolicyNone, + CPULimit: 0.75, } assert.DeepEqual(t, hc, res) }