Support lxc configurations in docker containerizer
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/75046648 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/75046648 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/75046648 Branch: refs/heads/docker_symlink Commit: 75046648a7613b34e99697ddbd4b18bc6532f795 Parents: 45699c7 Author: Timothy Chen <[email protected]> Authored: Mon Sep 22 15:04:00 2014 -0700 Committer: Timothy Chen <[email protected]> Committed: Tue Oct 28 23:02:38 2014 +0000 ---------------------------------------------------------------------- include/mesos/mesos.proto | 4 ++++ src/docker/docker.cpp | 12 ++++++++++++ 2 files changed, 16 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/75046648/include/mesos/mesos.proto ---------------------------------------------------------------------- diff --git a/include/mesos/mesos.proto b/include/mesos/mesos.proto index 1d4f673..07dc8fe 100644 --- a/include/mesos/mesos.proto +++ b/include/mesos/mesos.proto @@ -869,6 +869,7 @@ message ContainerInfo { enum Network { HOST = 1; BRIDGE = 2; + NONE = 3; } optional Network network = 2 [default = HOST]; @@ -883,6 +884,9 @@ message ContainerInfo { repeated PortMapping port_mappings = 3; optional bool privileged = 4 [default = false]; + + // lxc specific configuration. + repeated Parameter lxc_configs = 5; } required Type type = 1; http://git-wip-us.apache.org/repos/asf/mesos/blob/75046648/src/docker/docker.cpp ---------------------------------------------------------------------- diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp index 81d538a..a9dacd4 100644 --- a/src/docker/docker.cpp +++ b/src/docker/docker.cpp @@ -361,12 +361,24 @@ Future<Nothing> Docker::run( switch (dockerInfo.network()) { case ContainerInfo::DockerInfo::HOST: network = "host"; break; case ContainerInfo::DockerInfo::BRIDGE: network = "bridge"; break; + case ContainerInfo::DockerInfo::NONE: network = "none"; break; default: return Failure("Unsupported Network mode: " + stringify(dockerInfo.network())); } argv.push_back(network); + if (dockerInfo.lxc_configs().size() > 0) { + if (network != "none") { + return Failure("Network mode has to be 'NONE' to support lxc configs"); + } + + foreach (const Parameter& param, dockerInfo.lxc_configs()) { + argv.push_back("--lxc-conf"); + argv.push_back(param.key() + "=" + param.value()); + } + } + if (dockerInfo.port_mappings().size() > 0) { if (network != "bridge") { return Failure("Port mappings are only supported for bridge network");
