From ab1c7fa66ff2e79d6246154bb3667234296f9d30 Mon Sep 17 00:00:00 2001 From: Alexei Yuzhakov Date: Sun, 22 May 2016 09:29:11 +0600 Subject: [PATCH] Add ability to run privileged containers (fix #269). Signed-off-by: Alexei Yuzhakov --- .../ContainerSettingsAdvanced.react.js | 17 ++++++++++++++--- src/utils/ContainerUtil.js | 9 +++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/components/ContainerSettingsAdvanced.react.js b/src/components/ContainerSettingsAdvanced.react.js index 6120498c3c..08b8e351b1 100644 --- a/src/components/ContainerSettingsAdvanced.react.js +++ b/src/components/ContainerSettingsAdvanced.react.js @@ -1,3 +1,4 @@ +import _ from 'underscore'; import React from 'react/addons'; import metrics from '../utils/MetricsUtil'; import ContainerUtil from '../utils/ContainerUtil'; @@ -11,10 +12,11 @@ var ContainerSettingsAdvanced = React.createClass({ }, getInitialState: function () { - let [tty, openStdin] = ContainerUtil.mode(this.props.container) || [true, true]; + let [tty, openStdin, privileged] = ContainerUtil.mode(this.props.container) || [true, true, false]; return { tty: tty, - openStdin: openStdin + openStdin: openStdin, + privileged: privileged }; }, @@ -22,7 +24,9 @@ var ContainerSettingsAdvanced = React.createClass({ metrics.track('Saved Advanced Options'); let tty = this.state.tty; let openStdin = this.state.openStdin; - containerActions.update(this.props.container.Name, {Tty: tty, OpenStdin: openStdin}); + let privileged = this.state.privileged; + let hostConfig = _.extend(this.props.container.HostConfig, {Privileged: privileged}); + containerActions.update(this.props.container.Name, {Tty: tty, OpenStdin: openStdin, HostConfig: hostConfig}); }, handleChangeTty: function () { @@ -37,6 +41,12 @@ var ContainerSettingsAdvanced = React.createClass({ }); }, + handleChangePrivileged: function () { + this.setState({ + privileged: !this.state.privileged + }); + }, + render: function () { if (!this.props.container) { return false; @@ -49,6 +59,7 @@ var ContainerSettingsAdvanced = React.createClass({

Allocate a TTY for this container

Keep STDIN open even if not attached

+

Privileged mode

Save diff --git a/src/utils/ContainerUtil.js b/src/utils/ContainerUtil.js index a19576970f..5d1d2014ca 100644 --- a/src/utils/ContainerUtil.js +++ b/src/utils/ContainerUtil.js @@ -15,10 +15,11 @@ var ContainerUtil = { // Provide Foreground options mode: function (container) { - if (!container || !container.Config) { - return [true, true]; - } - return [container.Config.Tty, container.Config.OpenStdin]; + return [ + (container && container.Config) ? container.Config.Tty : true, + (container && container.Config) ? container.Config.OpenStdin : true, + (container && container.HostConfig) ? container.HostConfig.Privileged : false + ]; }, // TODO: inject host here instead of requiring Docker