Skip to content

Commit af189fa

Browse files
committed
Implement privileged support
Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
1 parent 7db07d0 commit af189fa

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

agent/exec/dockerapi/container.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ func (c *containerConfig) hostConfig() *enginecontainer.HostConfig {
212212
Isolation: c.isolation(),
213213
CapAdd: c.spec().CapabilityAdd,
214214
CapDrop: c.spec().CapabilityDrop,
215+
Privileged: c.spec().Privileged,
215216
}
216217

217218
// The format of extra hosts on swarmkit is specified in:

agent/exec/dockerapi/container_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,26 @@ func TestCapabilityDrop(t *testing.T) {
299299
}
300300
}
301301

302+
func TestPrivileged(t *testing.T) {
303+
c := containerConfig{
304+
task: &api.Task{
305+
Spec: api.TaskSpec{
306+
Runtime: &api.TaskSpec_Container{
307+
Container: &api.ContainerSpec{
308+
Privileged: true,
309+
},
310+
},
311+
},
312+
},
313+
}
314+
315+
expected := true
316+
actual := c.hostConfig().Privileged
317+
if !reflect.DeepEqual(actual, expected) {
318+
t.Fatalf("expected %s, got %s", expected, actual)
319+
}
320+
}
321+
302322
func TestUlimits(t *testing.T) {
303323
c := containerConfig{
304324
task: &api.Task{

cmd/swarmctl/service/flagparser/container.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,13 @@ func parseContainer(flags *pflag.FlagSet, spec *api.ServiceSpec) error {
7676
}
7777
}
7878

79+
if flags.Changed("privileged") {
80+
privileged, err := flags.GetBool("privileged")
81+
if err != nil {
82+
return err
83+
}
84+
spec.Task.GetContainer().Privileged = privileged
85+
}
86+
7987
return nil
8088
}

cmd/swarmctl/service/flagparser/flags.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ func AddServiceFlags(flags *pflag.FlagSet) {
2525
flags.StringSlice("env", nil, "container env")
2626
flags.Bool("tty", false, "open a tty on standard streams")
2727
flags.Bool("open-stdin", false, "open standard input")
28+
flags.Bool("privileged", false, "give extended privileges to container (default false)")
2829

2930
flags.StringSlice("ports", nil, "ports")
3031
flags.String("network", "", "network name")

0 commit comments

Comments
 (0)