You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2016/02/04 02:45:10 UTC
[1/3] mesos git commit: Implemented docker runtime isolator interface.
Repository: mesos
Updated Branches:
refs/heads/master 474f5056a -> 0b0a3dc54
Implemented docker runtime isolator interface.
Review: https://reviews.apache.org/r/43021
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/aa1a27f7
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/aa1a27f7
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/aa1a27f7
Branch: refs/heads/master
Commit: aa1a27f73c21e31d1e426c692a6d405f16bf2660
Parents: 474f505
Author: Gilbert Song <so...@gmail.com>
Authored: Wed Feb 3 17:08:54 2016 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Feb 3 17:08:54 2016 -0800
----------------------------------------------------------------------
src/CMakeLists.txt | 1 +
src/Makefile.am | 2 +
.../mesos/isolators/docker/runtime.cpp | 109 +++++++++++++++++++
.../mesos/isolators/docker/runtime.hpp | 72 ++++++++++++
4 files changed, 184 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/aa1a27f7/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6b2c7cb..2c23af5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -125,6 +125,7 @@ set(LINUX_SRC
slave/containerizer/mesos/isolators/cgroups/mem.cpp
slave/containerizer/mesos/isolators/cgroups/net_cls.cpp
slave/containerizer/mesos/isolators/cgroups/perf_event.cpp
+ slave/containerizer/mesos/isolators/docker/runtime.cpp
slave/containerizer/mesos/isolators/filesystem/linux.cpp
slave/containerizer/mesos/isolators/filesystem/posix.cpp
slave/containerizer/mesos/isolators/filesystem/shared.cpp
http://git-wip-us.apache.org/repos/asf/mesos/blob/aa1a27f7/src/Makefile.am
----------------------------------------------------------------------
diff --git a/src/Makefile.am b/src/Makefile.am
index f000d9f..a851862 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -819,6 +819,7 @@ MESOS_LINUX_FILES = \
slave/containerizer/mesos/isolators/cgroups/mem.cpp \
slave/containerizer/mesos/isolators/cgroups/net_cls.cpp \
slave/containerizer/mesos/isolators/cgroups/perf_event.cpp \
+ slave/containerizer/mesos/isolators/docker/runtime.cpp \
slave/containerizer/mesos/isolators/filesystem/linux.cpp \
slave/containerizer/mesos/isolators/filesystem/shared.cpp \
slave/containerizer/mesos/isolators/namespaces/pid.cpp \
@@ -837,6 +838,7 @@ MESOS_LINUX_FILES += \
slave/containerizer/mesos/isolators/cgroups/mem.hpp \
slave/containerizer/mesos/isolators/cgroups/net_cls.hpp \
slave/containerizer/mesos/isolators/cgroups/perf_event.hpp \
+ slave/containerizer/mesos/isolators/docker/runtime.hpp \
slave/containerizer/mesos/isolators/filesystem/linux.hpp \
slave/containerizer/mesos/isolators/filesystem/shared.hpp \
slave/containerizer/mesos/isolators/namespaces/pid.hpp \
http://git-wip-us.apache.org/repos/asf/mesos/blob/aa1a27f7/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
new file mode 100644
index 0000000..f5f9678
--- /dev/null
+++ b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
@@ -0,0 +1,109 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <list>
+
+#include "slave/flags.hpp"
+
+#include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
+
+using std::list;
+using std::string;
+
+using process::Failure;
+using process::Future;
+using process::Owned;
+using process::PID;
+
+using mesos::slave::ContainerConfig;
+using mesos::slave::ContainerLaunchInfo;
+using mesos::slave::ContainerLimitation;
+using mesos::slave::ContainerState;
+using mesos::slave::Isolator;
+
+namespace mesos {
+namespace internal {
+namespace slave {
+
+DockerRuntimeIsolatorProcess::DockerRuntimeIsolatorProcess(
+ const Flags& _flags)
+ : flags(_flags) {}
+
+
+DockerRuntimeIsolatorProcess::~DockerRuntimeIsolatorProcess() {}
+
+
+Try<Isolator*> DockerRuntimeIsolatorProcess::create(const Flags& flags)
+{
+ return nullptr;
+}
+
+
+Future<Nothing> DockerRuntimeIsolatorProcess::recover(
+ const list<ContainerState>& states,
+ const hashset<ContainerID>& orphans)
+{
+ return Nothing();
+}
+
+
+Future<Option<ContainerLaunchInfo>> DockerRuntimeIsolatorProcess::prepare(
+ const ContainerID& containerId,
+ const ContainerConfig& containerConfig)
+{
+ return None();
+}
+
+
+Future<Nothing> DockerRuntimeIsolatorProcess::isolate(
+ const ContainerID& containerId,
+ pid_t pid)
+{
+ return Nothing();
+}
+
+
+Future<ContainerLimitation> DockerRuntimeIsolatorProcess::watch(
+ const ContainerID& containerId)
+{
+ return Future<ContainerLimitation>();
+}
+
+
+Future<Nothing> DockerRuntimeIsolatorProcess::update(
+ const ContainerID& containerId,
+ const Resources& resources)
+{
+ return Nothing();
+}
+
+
+Future<ResourceStatistics> DockerRuntimeIsolatorProcess::usage(
+ const ContainerID& containerId)
+{
+ return ResourceStatistics();
+}
+
+
+Future<Nothing> DockerRuntimeIsolatorProcess::cleanup(
+ const ContainerID& containerId)
+{
+ return Nothing();
+}
+
+} // namespace slave {
+} // namespace internal {
+} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/aa1a27f7/src/slave/containerizer/mesos/isolators/docker/runtime.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/docker/runtime.hpp b/src/slave/containerizer/mesos/isolators/docker/runtime.hpp
new file mode 100644
index 0000000..a0e82a3
--- /dev/null
+++ b/src/slave/containerizer/mesos/isolators/docker/runtime.hpp
@@ -0,0 +1,72 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef __DOCKER_RUNTIME_ISOLATOR_HPP__
+#define __DOCKER_RUNTIME_ISOLATOR_HPP__
+
+#include "slave/containerizer/mesos/isolator.hpp"
+
+namespace mesos {
+namespace internal {
+namespace slave {
+
+// The docker runtime isolator is responsible for preparing mesos
+// container by merging runtime configuration specified by user
+// and docker image default configuration.
+class DockerRuntimeIsolatorProcess : public MesosIsolatorProcess
+{
+public:
+ static Try<mesos::slave::Isolator*> create(const Flags& flags);
+
+ virtual ~DockerRuntimeIsolatorProcess();
+
+ virtual process::Future<Nothing> recover(
+ const std::list<mesos::slave::ContainerState>& states,
+ const hashset<ContainerID>& orphans);
+
+ virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
+ const ContainerID& containerId,
+ const mesos::slave::ContainerConfig& containerConfig);
+
+ virtual process::Future<Nothing> isolate(
+ const ContainerID& containerId,
+ pid_t pid);
+
+ virtual process::Future<mesos::slave::ContainerLimitation> watch(
+ const ContainerID& containerId);
+
+ virtual process::Future<Nothing> update(
+ const ContainerID& containerId,
+ const Resources& resources);
+
+ virtual process::Future<ResourceStatistics> usage(
+ const ContainerID& containerId);
+
+ virtual process::Future<Nothing> cleanup(
+ const ContainerID& containerId);
+
+private:
+ DockerRuntimeIsolatorProcess(
+ const Flags& flags);
+
+ const Flags flags;
+};
+
+} // namespace slave {
+} // namespace internal {
+} // namespace mesos {
+
+#endif // __DOCKER_RUNTIME_ISOLATOR_HPP__
[2/3] mesos git commit: Added protobuf fields for docker runtime
isolator.
Posted by ji...@apache.org.
Added protobuf fields for docker runtime isolator.
Review: https://reviews.apache.org/r/43022/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/2d5d14f0
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/2d5d14f0
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/2d5d14f0
Branch: refs/heads/master
Commit: 2d5d14f092405c7971c21097820a91223b22ab27
Parents: aa1a27f
Author: Gilbert Song <so...@gmail.com>
Authored: Wed Feb 3 17:09:59 2016 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Feb 3 17:13:17 2016 -0800
----------------------------------------------------------------------
include/mesos/slave/isolator.proto | 9 +++++++++
1 file changed, 9 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/2d5d14f0/include/mesos/slave/isolator.proto
----------------------------------------------------------------------
diff --git a/include/mesos/slave/isolator.proto b/include/mesos/slave/isolator.proto
index 0e2dd9b..5a44b68 100644
--- a/include/mesos/slave/isolator.proto
+++ b/include/mesos/slave/isolator.proto
@@ -115,4 +115,13 @@ message ContainerLaunchInfo
// (Linux only) The namespaces required for the container.
// The namespaces are created while launching the executor.
optional uint32 namespaces = 4 [default = 0];
+
+ // If specified, it'll become the launch command for the custom
+ // executor, or the launch command for the user task in the case of
+ // a command task.
+ optional CommandInfo command = 5;
+
+ // The working directory for the container.
+ // NOTE: This is different than Mesos sandbox.
+ optional string working_directory = 6;
}
Re: [3/3] mesos git commit: Plugged in docker runtime isolator.
Posted by Gilbert Song <gi...@mesosphere.io>.
Thank you guys. Should have been more careful to avoid this.
On Wed, Feb 3, 2016 at 9:17 PM, Jie Yu <yu...@gmail.com> wrote:
> Thanks James. Just committed a fix.
>
> On Wed, Feb 3, 2016 at 8:54 PM, James Peach <jo...@gmail.com> wrote:
>
> >
> > > On Feb 3, 2016, at 5:45 PM, jieyu@apache.org wrote:
> > >
> > > Plugged in docker runtime isolator.
> > >
> > > Review: https://reviews.apache.org/r/43036/
> > >
> > >
> > > Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
> > > Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0b0a3dc5
> > > Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0b0a3dc5
> > > Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0b0a3dc5
> > >
> > > Branch: refs/heads/master
> > > Commit: 0b0a3dc5467224511b1963dd0ac530bca7506376
> > > Parents: 2d5d14f
> > > Author: Gilbert Song <so...@gmail.com>
> > > Authored: Wed Feb 3 17:14:23 2016 -0800
> > > Committer: Jie Yu <yu...@gmail.com>
> > > Committed: Wed Feb 3 17:14:23 2016 -0800
> > >
> > > ----------------------------------------------------------------------
> > > src/slave/containerizer/mesos/containerizer.cpp | 12 +++++++-
> > > .../mesos/isolators/docker/runtime.cpp | 30
> ++++++++++++++++++--
> > > 2 files changed, 39 insertions(+), 3 deletions(-)
> > > ----------------------------------------------------------------------
> > >
> > >
> > >
> >
> http://git-wip-us.apache.org/repos/asf/mesos/blob/0b0a3dc5/src/slave/containerizer/mesos/containerizer.cpp
> > > ----------------------------------------------------------------------
> > > diff --git a/src/slave/containerizer/mesos/containerizer.cpp
> > b/src/slave/containerizer/mesos/containerizer.cpp
> > > index 5f8b6c7..12294cd 100644
> > > --- a/src/slave/containerizer/mesos/containerizer.cpp
> > > +++ b/src/slave/containerizer/mesos/containerizer.cpp
> > > @@ -63,6 +63,10 @@
> > > #endif
> > >
> > > #ifdef __linux__
> > > +#include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
> > > +#endif
> > > +
> > > +#ifdef __linux__
> > > #include "slave/containerizer/mesos/isolators/filesystem/linux.hpp"
> > > #endif
> > > #include "slave/containerizer/mesos/isolators/filesystem/posix.hpp"
> > > @@ -210,6 +214,7 @@ Try<MesosContainerizer*>
> MesosContainerizer::create(
> > > {"cgroups/mem", &CgroupsMemIsolatorProcess::create},
> > > {"cgroups/net_cls", &CgroupsNetClsIsolatorProcess::create},
> > > {"cgroups/perf_event", &CgroupsPerfEventIsolatorProcess::create},
> > > + {"docker/runtime", &DockerRuntimeIsolatorProcess::create},
> > > {"namespaces/pid", &NamespacesPidIsolatorProcess::create},
> > > #endif
> > > #ifdef WITH_NETWORK_ISOLATOR
> > > @@ -839,7 +844,12 @@ Future<list<Option<ContainerLaunchInfo>>>
> > MesosContainerizerProcess::prepare(
> > > }
> > >
> > > if (provisionInfo.isSome()) {
> > > - containerConfig.set_rootfs(provisionInfo.get().rootfs);
> > > + containerConfig.set_rootfs(provisionInfo->rootfs);
> > > +
> > > + if (provisionInfo->dockerManifest.isSome()) {
> > > + ContainerConfig::Docker* docker =
> > containerConfig.mutable_docker();
> > > +
> >
> docker->mutable_manifest()->CopyFrom(provisionInfo->dockerManifest.get());
> > > + }
> > > }
> > >
> > > // We prepare the isolators sequentially according to their ordering
> > >
> > >
> >
> http://git-wip-us.apache.org/repos/asf/mesos/blob/0b0a3dc5/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > > ----------------------------------------------------------------------
> > > diff --git a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > > index f5f9678..5189a6d 100644
> > > --- a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > > +++ b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > > @@ -16,6 +16,10 @@
> > >
> > > #include <list>
> > >
> > > +#include <glog/logging.h>
> > > +
> > > +#include <stout/stringify.hpp>
> > > +
> > > #include "slave/flags.hpp"
> > >
> > > #include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
> > > @@ -48,7 +52,10 @@
> > DockerRuntimeIsolatorProcess::~DockerRuntimeIsolatorProcess() {}
> > >
> > > Try<Isolator*> DockerRuntimeIsolatorProcess::create(const Flags& flags)
> > > {
> > > - return nullptr;
> > > + process::Owned<MesosIsolatorProcess> process(
> > > + new DockerRuntimeIsolatorProcess(flags));
> > > +
> > > + return new MesosIsolator(process);
> > > }
> > >
> > >
> > > @@ -64,7 +71,26 @@ Future<Option<ContainerLaunchInfo>>
> > DockerRuntimeIsolatorProcess::prepare(
> > > const ContainerID& containerId,
> > > const ContainerConfig& containerConfig)
> > > {
> > > - return None();
> > > + const ExecutorInfo& executorInfo = containerConfig.executor_info();
> > > +
> > > + if (!executorInfo.has_container()) {
> > > + return None();
> > > + }
> > > +
> > > + if (executorInfo.container().type() != ContainerInfo::MESOS) {
> > > + return Failure("Can only prepare docker runtime for a MESOS
> > contaienr");
> >
> > s/contaienr/container/
> >
> > > + }
> > > +
> > > + if (!containerConfig.has_docker()) {
> > > + // No docker image default config available.
> > > + return None();
> > > + }
> > > +
> > > + // Contains docker image default environment variables, merged
> > > + // command, and working directory.
> > > + ContainerLaunchInfo launchInfo;
> > > +
> > > + return launchInfo;
> > > }
> > >
> > >
> > >
> >
> >
>
Re: [3/3] mesos git commit: Plugged in docker runtime isolator.
Posted by Jie Yu <yu...@gmail.com>.
Thanks James. Just committed a fix.
On Wed, Feb 3, 2016 at 8:54 PM, James Peach <jo...@gmail.com> wrote:
>
> > On Feb 3, 2016, at 5:45 PM, jieyu@apache.org wrote:
> >
> > Plugged in docker runtime isolator.
> >
> > Review: https://reviews.apache.org/r/43036/
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
> > Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0b0a3dc5
> > Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0b0a3dc5
> > Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0b0a3dc5
> >
> > Branch: refs/heads/master
> > Commit: 0b0a3dc5467224511b1963dd0ac530bca7506376
> > Parents: 2d5d14f
> > Author: Gilbert Song <so...@gmail.com>
> > Authored: Wed Feb 3 17:14:23 2016 -0800
> > Committer: Jie Yu <yu...@gmail.com>
> > Committed: Wed Feb 3 17:14:23 2016 -0800
> >
> > ----------------------------------------------------------------------
> > src/slave/containerizer/mesos/containerizer.cpp | 12 +++++++-
> > .../mesos/isolators/docker/runtime.cpp | 30 ++++++++++++++++++--
> > 2 files changed, 39 insertions(+), 3 deletions(-)
> > ----------------------------------------------------------------------
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/mesos/blob/0b0a3dc5/src/slave/containerizer/mesos/containerizer.cpp
> > ----------------------------------------------------------------------
> > diff --git a/src/slave/containerizer/mesos/containerizer.cpp
> b/src/slave/containerizer/mesos/containerizer.cpp
> > index 5f8b6c7..12294cd 100644
> > --- a/src/slave/containerizer/mesos/containerizer.cpp
> > +++ b/src/slave/containerizer/mesos/containerizer.cpp
> > @@ -63,6 +63,10 @@
> > #endif
> >
> > #ifdef __linux__
> > +#include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
> > +#endif
> > +
> > +#ifdef __linux__
> > #include "slave/containerizer/mesos/isolators/filesystem/linux.hpp"
> > #endif
> > #include "slave/containerizer/mesos/isolators/filesystem/posix.hpp"
> > @@ -210,6 +214,7 @@ Try<MesosContainerizer*> MesosContainerizer::create(
> > {"cgroups/mem", &CgroupsMemIsolatorProcess::create},
> > {"cgroups/net_cls", &CgroupsNetClsIsolatorProcess::create},
> > {"cgroups/perf_event", &CgroupsPerfEventIsolatorProcess::create},
> > + {"docker/runtime", &DockerRuntimeIsolatorProcess::create},
> > {"namespaces/pid", &NamespacesPidIsolatorProcess::create},
> > #endif
> > #ifdef WITH_NETWORK_ISOLATOR
> > @@ -839,7 +844,12 @@ Future<list<Option<ContainerLaunchInfo>>>
> MesosContainerizerProcess::prepare(
> > }
> >
> > if (provisionInfo.isSome()) {
> > - containerConfig.set_rootfs(provisionInfo.get().rootfs);
> > + containerConfig.set_rootfs(provisionInfo->rootfs);
> > +
> > + if (provisionInfo->dockerManifest.isSome()) {
> > + ContainerConfig::Docker* docker =
> containerConfig.mutable_docker();
> > +
> docker->mutable_manifest()->CopyFrom(provisionInfo->dockerManifest.get());
> > + }
> > }
> >
> > // We prepare the isolators sequentially according to their ordering
> >
> >
> http://git-wip-us.apache.org/repos/asf/mesos/blob/0b0a3dc5/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > ----------------------------------------------------------------------
> > diff --git a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > index f5f9678..5189a6d 100644
> > --- a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > +++ b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> > @@ -16,6 +16,10 @@
> >
> > #include <list>
> >
> > +#include <glog/logging.h>
> > +
> > +#include <stout/stringify.hpp>
> > +
> > #include "slave/flags.hpp"
> >
> > #include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
> > @@ -48,7 +52,10 @@
> DockerRuntimeIsolatorProcess::~DockerRuntimeIsolatorProcess() {}
> >
> > Try<Isolator*> DockerRuntimeIsolatorProcess::create(const Flags& flags)
> > {
> > - return nullptr;
> > + process::Owned<MesosIsolatorProcess> process(
> > + new DockerRuntimeIsolatorProcess(flags));
> > +
> > + return new MesosIsolator(process);
> > }
> >
> >
> > @@ -64,7 +71,26 @@ Future<Option<ContainerLaunchInfo>>
> DockerRuntimeIsolatorProcess::prepare(
> > const ContainerID& containerId,
> > const ContainerConfig& containerConfig)
> > {
> > - return None();
> > + const ExecutorInfo& executorInfo = containerConfig.executor_info();
> > +
> > + if (!executorInfo.has_container()) {
> > + return None();
> > + }
> > +
> > + if (executorInfo.container().type() != ContainerInfo::MESOS) {
> > + return Failure("Can only prepare docker runtime for a MESOS
> contaienr");
>
> s/contaienr/container/
>
> > + }
> > +
> > + if (!containerConfig.has_docker()) {
> > + // No docker image default config available.
> > + return None();
> > + }
> > +
> > + // Contains docker image default environment variables, merged
> > + // command, and working directory.
> > + ContainerLaunchInfo launchInfo;
> > +
> > + return launchInfo;
> > }
> >
> >
> >
>
>
Re: [3/3] mesos git commit: Plugged in docker runtime isolator.
Posted by James Peach <jo...@gmail.com>.
> On Feb 3, 2016, at 5:45 PM, jieyu@apache.org wrote:
>
> Plugged in docker runtime isolator.
>
> Review: https://reviews.apache.org/r/43036/
>
>
> Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
> Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0b0a3dc5
> Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0b0a3dc5
> Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0b0a3dc5
>
> Branch: refs/heads/master
> Commit: 0b0a3dc5467224511b1963dd0ac530bca7506376
> Parents: 2d5d14f
> Author: Gilbert Song <so...@gmail.com>
> Authored: Wed Feb 3 17:14:23 2016 -0800
> Committer: Jie Yu <yu...@gmail.com>
> Committed: Wed Feb 3 17:14:23 2016 -0800
>
> ----------------------------------------------------------------------
> src/slave/containerizer/mesos/containerizer.cpp | 12 +++++++-
> .../mesos/isolators/docker/runtime.cpp | 30 ++++++++++++++++++--
> 2 files changed, 39 insertions(+), 3 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/mesos/blob/0b0a3dc5/src/slave/containerizer/mesos/containerizer.cpp
> ----------------------------------------------------------------------
> diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
> index 5f8b6c7..12294cd 100644
> --- a/src/slave/containerizer/mesos/containerizer.cpp
> +++ b/src/slave/containerizer/mesos/containerizer.cpp
> @@ -63,6 +63,10 @@
> #endif
>
> #ifdef __linux__
> +#include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
> +#endif
> +
> +#ifdef __linux__
> #include "slave/containerizer/mesos/isolators/filesystem/linux.hpp"
> #endif
> #include "slave/containerizer/mesos/isolators/filesystem/posix.hpp"
> @@ -210,6 +214,7 @@ Try<MesosContainerizer*> MesosContainerizer::create(
> {"cgroups/mem", &CgroupsMemIsolatorProcess::create},
> {"cgroups/net_cls", &CgroupsNetClsIsolatorProcess::create},
> {"cgroups/perf_event", &CgroupsPerfEventIsolatorProcess::create},
> + {"docker/runtime", &DockerRuntimeIsolatorProcess::create},
> {"namespaces/pid", &NamespacesPidIsolatorProcess::create},
> #endif
> #ifdef WITH_NETWORK_ISOLATOR
> @@ -839,7 +844,12 @@ Future<list<Option<ContainerLaunchInfo>>> MesosContainerizerProcess::prepare(
> }
>
> if (provisionInfo.isSome()) {
> - containerConfig.set_rootfs(provisionInfo.get().rootfs);
> + containerConfig.set_rootfs(provisionInfo->rootfs);
> +
> + if (provisionInfo->dockerManifest.isSome()) {
> + ContainerConfig::Docker* docker = containerConfig.mutable_docker();
> + docker->mutable_manifest()->CopyFrom(provisionInfo->dockerManifest.get());
> + }
> }
>
> // We prepare the isolators sequentially according to their ordering
>
> http://git-wip-us.apache.org/repos/asf/mesos/blob/0b0a3dc5/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> ----------------------------------------------------------------------
> diff --git a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> index f5f9678..5189a6d 100644
> --- a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> +++ b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
> @@ -16,6 +16,10 @@
>
> #include <list>
>
> +#include <glog/logging.h>
> +
> +#include <stout/stringify.hpp>
> +
> #include "slave/flags.hpp"
>
> #include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
> @@ -48,7 +52,10 @@ DockerRuntimeIsolatorProcess::~DockerRuntimeIsolatorProcess() {}
>
> Try<Isolator*> DockerRuntimeIsolatorProcess::create(const Flags& flags)
> {
> - return nullptr;
> + process::Owned<MesosIsolatorProcess> process(
> + new DockerRuntimeIsolatorProcess(flags));
> +
> + return new MesosIsolator(process);
> }
>
>
> @@ -64,7 +71,26 @@ Future<Option<ContainerLaunchInfo>> DockerRuntimeIsolatorProcess::prepare(
> const ContainerID& containerId,
> const ContainerConfig& containerConfig)
> {
> - return None();
> + const ExecutorInfo& executorInfo = containerConfig.executor_info();
> +
> + if (!executorInfo.has_container()) {
> + return None();
> + }
> +
> + if (executorInfo.container().type() != ContainerInfo::MESOS) {
> + return Failure("Can only prepare docker runtime for a MESOS contaienr");
s/contaienr/container/
> + }
> +
> + if (!containerConfig.has_docker()) {
> + // No docker image default config available.
> + return None();
> + }
> +
> + // Contains docker image default environment variables, merged
> + // command, and working directory.
> + ContainerLaunchInfo launchInfo;
> +
> + return launchInfo;
> }
>
>
>
[3/3] mesos git commit: Plugged in docker runtime isolator.
Posted by ji...@apache.org.
Plugged in docker runtime isolator.
Review: https://reviews.apache.org/r/43036/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0b0a3dc5
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0b0a3dc5
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0b0a3dc5
Branch: refs/heads/master
Commit: 0b0a3dc5467224511b1963dd0ac530bca7506376
Parents: 2d5d14f
Author: Gilbert Song <so...@gmail.com>
Authored: Wed Feb 3 17:14:23 2016 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Feb 3 17:14:23 2016 -0800
----------------------------------------------------------------------
src/slave/containerizer/mesos/containerizer.cpp | 12 +++++++-
.../mesos/isolators/docker/runtime.cpp | 30 ++++++++++++++++++--
2 files changed, 39 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/0b0a3dc5/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
index 5f8b6c7..12294cd 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -63,6 +63,10 @@
#endif
#ifdef __linux__
+#include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
+#endif
+
+#ifdef __linux__
#include "slave/containerizer/mesos/isolators/filesystem/linux.hpp"
#endif
#include "slave/containerizer/mesos/isolators/filesystem/posix.hpp"
@@ -210,6 +214,7 @@ Try<MesosContainerizer*> MesosContainerizer::create(
{"cgroups/mem", &CgroupsMemIsolatorProcess::create},
{"cgroups/net_cls", &CgroupsNetClsIsolatorProcess::create},
{"cgroups/perf_event", &CgroupsPerfEventIsolatorProcess::create},
+ {"docker/runtime", &DockerRuntimeIsolatorProcess::create},
{"namespaces/pid", &NamespacesPidIsolatorProcess::create},
#endif
#ifdef WITH_NETWORK_ISOLATOR
@@ -839,7 +844,12 @@ Future<list<Option<ContainerLaunchInfo>>> MesosContainerizerProcess::prepare(
}
if (provisionInfo.isSome()) {
- containerConfig.set_rootfs(provisionInfo.get().rootfs);
+ containerConfig.set_rootfs(provisionInfo->rootfs);
+
+ if (provisionInfo->dockerManifest.isSome()) {
+ ContainerConfig::Docker* docker = containerConfig.mutable_docker();
+ docker->mutable_manifest()->CopyFrom(provisionInfo->dockerManifest.get());
+ }
}
// We prepare the isolators sequentially according to their ordering
http://git-wip-us.apache.org/repos/asf/mesos/blob/0b0a3dc5/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
index f5f9678..5189a6d 100644
--- a/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
+++ b/src/slave/containerizer/mesos/isolators/docker/runtime.cpp
@@ -16,6 +16,10 @@
#include <list>
+#include <glog/logging.h>
+
+#include <stout/stringify.hpp>
+
#include "slave/flags.hpp"
#include "slave/containerizer/mesos/isolators/docker/runtime.hpp"
@@ -48,7 +52,10 @@ DockerRuntimeIsolatorProcess::~DockerRuntimeIsolatorProcess() {}
Try<Isolator*> DockerRuntimeIsolatorProcess::create(const Flags& flags)
{
- return nullptr;
+ process::Owned<MesosIsolatorProcess> process(
+ new DockerRuntimeIsolatorProcess(flags));
+
+ return new MesosIsolator(process);
}
@@ -64,7 +71,26 @@ Future<Option<ContainerLaunchInfo>> DockerRuntimeIsolatorProcess::prepare(
const ContainerID& containerId,
const ContainerConfig& containerConfig)
{
- return None();
+ const ExecutorInfo& executorInfo = containerConfig.executor_info();
+
+ if (!executorInfo.has_container()) {
+ return None();
+ }
+
+ if (executorInfo.container().type() != ContainerInfo::MESOS) {
+ return Failure("Can only prepare docker runtime for a MESOS contaienr");
+ }
+
+ if (!containerConfig.has_docker()) {
+ // No docker image default config available.
+ return None();
+ }
+
+ // Contains docker image default environment variables, merged
+ // command, and working directory.
+ ContainerLaunchInfo launchInfo;
+
+ return launchInfo;
}