You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by tn...@apache.org on 2015/09/01 07:57:05 UTC
mesos git commit: Added support for custom docker host.
Repository: mesos
Updated Branches:
refs/heads/master 7e8370cdc -> 9d8829182
Added support for custom docker host.
Review: https://reviews.apache.org/r/37114
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9d882918
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9d882918
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9d882918
Branch: refs/heads/master
Commit: 9d8829182e2b40bafc9aaa58e96ff3ac637d0b2c
Parents: 7e8370c
Author: Vaibhav Khanduja <va...@yahoo.com>
Authored: Tue Sep 1 00:08:23 2015 +0000
Committer: Timothy Chen <tn...@apache.org>
Committed: Mon Aug 31 22:56:57 2015 -0700
----------------------------------------------------------------------
src/docker/docker.cpp | 39 +++++---
src/docker/docker.hpp | 15 +++-
src/docker/executor.cpp | 4 +-
src/docker/executor.hpp | 6 ++
src/slave/containerizer/docker.cpp | 3 +-
.../docker_containerizer_tests.cpp | 93 +++++++++++++++-----
src/tests/containerizer/docker_tests.cpp | 29 ++++--
src/tests/environment.cpp | 2 +-
src/tests/flags.hpp | 9 ++
src/tests/hook_tests.cpp | 3 +-
src/tests/mesos.hpp | 2 +-
11 files changed, 156 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index 12dc050..2e17ced 100755
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -95,10 +95,16 @@ static Future<Nothing> checkError(const string& cmd, const Subprocess& s)
.then(lambda::bind(_checkError, cmd, s));
}
-
-Try<Docker*> Docker::create(const string& path, bool validate)
+Try<Docker*> Docker::create(
+ const string& path,
+ const string& socket,
+ bool validate)
{
- Docker* docker = new Docker(path);
+ if (!strings::startsWith(socket, "/")) {
+ return Error("Invalid Docker socket path: " + socket);
+ }
+
+ Docker* docker = new Docker(path, socket);
if (!validate) {
return docker;
}
@@ -147,7 +153,7 @@ void commandDiscarded(const Subprocess& s, const string& cmd)
Future<Version> Docker::version() const
{
- string cmd = path + " --version";
+ string cmd = path + " -H " + socket + " --version";
Try<Subprocess> s = subprocess(
cmd,
@@ -348,6 +354,8 @@ Future<Nothing> Docker::run(
vector<string> argv;
argv.push_back(path);
+ argv.push_back("-H");
+ argv.push_back(socket);
argv.push_back("run");
if (dockerInfo.privileged()) {
@@ -595,7 +603,7 @@ Future<Nothing> Docker::stop(
stringify(timeoutSecs));
}
- string cmd = path + " stop -t " + stringify(timeoutSecs) +
+ string cmd = path + " -H " + socket + " stop -t " + stringify(timeoutSecs) +
" " + containerName;
VLOG(1) << "Running " << cmd;
@@ -642,7 +650,9 @@ Future<Nothing> Docker::rm(
const string& containerName,
bool force) const
{
- const string cmd = path + (force ? " rm -f " : " rm ") + containerName;
+ const string cmd =
+ path + " -H " + socket +
+ (force ? " rm -f " : " rm ") + containerName;
VLOG(1) << "Running " << cmd;
@@ -666,7 +676,7 @@ Future<Docker::Container> Docker::inspect(
{
Owned<Promise<Docker::Container>> promise(new Promise<Docker::Container>());
- const string cmd = path + " inspect " + containerName;
+ const string cmd = path + " -H " + socket + " inspect " + containerName;
_inspect(cmd, promise, retryInterval);
return promise->future();
@@ -800,7 +810,7 @@ Future<list<Docker::Container>> Docker::ps(
bool all,
const Option<string>& prefix) const
{
- string cmd = path + (all ? " ps -a" : " ps");
+ string cmd = path + " -H " + socket + (all ? " ps -a" : " ps");
VLOG(1) << "Running " << cmd;
@@ -959,10 +969,12 @@ Future<Docker::Image> Docker::pull(
if (force) {
// Skip inspect and docker pull the image.
- return Docker::__pull(*this, directory, image, path);
+ return Docker::__pull(*this, directory, image, path, socket);
}
argv.push_back(path);
+ argv.push_back("-H");
+ argv.push_back(socket);
argv.push_back("inspect");
argv.push_back(dockerImage);
@@ -997,6 +1009,7 @@ Future<Docker::Image> Docker::pull(
directory,
dockerImage,
path,
+ socket,
output));
}
@@ -1007,6 +1020,7 @@ Future<Docker::Image> Docker::_pull(
const string& directory,
const string& image,
const string& path,
+ const string& socket,
Future<string> output)
{
Option<int> status = s.status().get();
@@ -1017,7 +1031,7 @@ Future<Docker::Image> Docker::_pull(
output.discard();
- return Docker::__pull(docker, directory, image, path);
+ return Docker::__pull(docker, directory, image, path, socket);
}
@@ -1025,10 +1039,13 @@ Future<Docker::Image> Docker::__pull(
const Docker& docker,
const string& directory,
const string& image,
- const string& path)
+ const string& path,
+ const string& socket)
{
vector<string> argv;
argv.push_back(path);
+ argv.push_back("-H");
+ argv.push_back(socket);
argv.push_back("pull");
argv.push_back(image);
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/docker/docker.hpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.hpp b/src/docker/docker.hpp
index 6086710..4df57bc 100644
--- a/src/docker/docker.hpp
+++ b/src/docker/docker.hpp
@@ -42,7 +42,10 @@ class Docker
{
public:
// Create Docker abstraction and optionally validate docker.
- static Try<Docker*> create(const std::string& path, bool validate = true);
+ static Try<Docker*> create(
+ const std::string& path,
+ const std::string& socket,
+ bool validate = true);
virtual ~Docker() {}
@@ -151,7 +154,9 @@ public:
protected:
// Uses the specified path to the Docker CLI tool.
- Docker(const std::string& _path) : path(_path) {};
+ Docker(const std::string& _path,
+ const std::string& _socket)
+ : path(_path), socket("unix://" + _socket) {};
private:
static process::Future<Nothing> _run(
@@ -219,13 +224,15 @@ private:
const std::string& directory,
const std::string& image,
const std::string& path,
+ const std::string& socket,
process::Future<std::string> output);
static process::Future<Image> __pull(
const Docker& docker,
const std::string& directory,
const std::string& image,
- const std::string& path);
+ const std::string& path,
+ const std::string& socket);
static process::Future<Image> ___pull(
const Docker& docker,
@@ -242,6 +249,8 @@ private:
const std::string& cmd);
const std::string path;
+ const std::string socket;
+
};
#endif // __DOCKER_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/docker/executor.cpp
----------------------------------------------------------------------
diff --git a/src/docker/executor.cpp b/src/docker/executor.cpp
index 256d53d..6647075 100644
--- a/src/docker/executor.cpp
+++ b/src/docker/executor.cpp
@@ -406,7 +406,9 @@ int main(int argc, char** argv)
// The 2nd argument for docker create is set to false so we skip
// validation when creating a docker abstraction, as the slave
// should have already validated docker.
- Try<Docker*> docker = Docker::create(flags.docker.get(), false);
+ Try<Docker*> docker =
+ Docker::create(flags.docker.get(), flags.docker_socket.get(), false);
+
if (docker.isError()) {
cerr << "Unable to create docker abstraction: " << docker.error() << endl;
return EXIT_FAILURE;
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/docker/executor.hpp
----------------------------------------------------------------------
diff --git a/src/docker/executor.hpp b/src/docker/executor.hpp
index fa13b6e..8ab4e98 100644
--- a/src/docker/executor.hpp
+++ b/src/docker/executor.hpp
@@ -40,6 +40,11 @@ struct Flags : public mesos::internal::logging::Flags
"docker",
"The path to the docker executable.\n");
+ add(&docker_socket,
+ "docker_socket",
+ "The UNIX socket path to be used by docker CLI for accessing docker\n"
+ "daemon.\n");
+
add(&sandbox_directory,
"sandbox_directory",
"The path to the container sandbox holding stdout and stderr files\n"
@@ -57,6 +62,7 @@ struct Flags : public mesos::internal::logging::Flags
Option<std::string> container;
Option<std::string> docker;
+ Option<std::string> docker_socket;
Option<std::string> sandbox_directory;
Option<std::string> mapped_directory;
Option<Duration> stop_timeout;
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/slave/containerizer/docker.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.cpp b/src/slave/containerizer/docker.cpp
index a17e4f2..289d4ec 100644
--- a/src/slave/containerizer/docker.cpp
+++ b/src/slave/containerizer/docker.cpp
@@ -123,7 +123,7 @@ Try<DockerContainerizer*> DockerContainerizer::create(
const Flags& flags,
Fetcher* fetcher)
{
- Try<Docker*> create = Docker::create(flags.docker);
+ Try<Docker*> create = Docker::create(flags.docker, flags.docker_socket, true);
if (create.isError()) {
return Error("Failed to create docker: " + create.error());
}
@@ -187,6 +187,7 @@ docker::Flags dockerFlags(
dockerFlags.sandbox_directory = directory;
dockerFlags.mapped_directory = flags.sandbox_directory;
dockerFlags.stop_timeout = flags.docker_stop_timeout;
+ dockerFlags.docker_socket = flags.docker_socket;
return dockerFlags;
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/tests/containerizer/docker_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/docker_containerizer_tests.cpp b/src/tests/containerizer/docker_containerizer_tests.cpp
index 936f8c7..2c43a3a 100644
--- a/src/tests/containerizer/docker_containerizer_tests.cpp
+++ b/src/tests/containerizer/docker_containerizer_tests.cpp
@@ -141,7 +141,10 @@ public:
virtual void TearDown()
{
- Try<Docker*> docker = Docker::create(tests::flags.docker, false);
+ Try<Docker*> docker =
+ Docker::create(tests::flags.docker, tests::flags.docker_socket,
+ false);
+
ASSERT_SOME(docker);
Future<list<Docker::Container>> containers =
docker.get()->ps(true, slave::DOCKER_NAME_PREFIX);
@@ -167,7 +170,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Launch_Executor)
Try<PID<Master> > master = StartMaster();
ASSERT_SOME(master);
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
slave::Flags flags = CreateSlaveFlags();
@@ -277,7 +282,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Launch_Executor_Bridged)
Try<PID<Master> > master = StartMaster();
ASSERT_SOME(master);
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
slave::Flags flags = CreateSlaveFlags();
@@ -384,7 +391,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Launch)
Try<PID<Master> > master = StartMaster();
ASSERT_SOME(master);
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
slave::Flags flags = CreateSlaveFlags();
@@ -490,7 +499,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Kill)
Try<PID<Master> > master = StartMaster();
ASSERT_SOME(master);
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
slave::Flags flags = CreateSlaveFlags();
@@ -598,7 +609,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Usage)
slave::Flags flags = CreateSlaveFlags();
flags.resources = Option<string>("cpus:2;mem:1024");
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -731,7 +744,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Update)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -883,7 +898,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Recover)
{
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Future<string> stoppedContainer;
@@ -998,7 +1015,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_SkipRecoverNonDocker)
{
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -1051,7 +1070,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Logs)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
// We skip stopping the docker container because stopping a container
@@ -1169,7 +1190,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Default_CMD)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
// We skip stopping the docker container because stopping a container
@@ -1290,7 +1313,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Default_CMD_Override)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
// We skip stopping the docker container because stopping a container
@@ -1414,7 +1439,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Default_CMD_Args)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
// We skip stopping the docker container because stopping a container
@@ -1540,7 +1567,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_SlaveRecoveryTaskContainer)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -1689,7 +1718,9 @@ TEST_F(DockerContainerizerTest,
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -1847,7 +1878,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_NC_PortMapping)
flags.resources = "cpus:1;mem:1024;ports:[10000-10000]";
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
// We skip stopping the docker container because stopping a container
@@ -1988,7 +2021,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_LaunchSandboxWithColon)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -2080,7 +2115,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_DestroyWhileFetching)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -2185,7 +2222,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_DestroyWhilePulling)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -2297,7 +2336,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_ExecutorCleanupWhenLaunchFailed)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -2394,7 +2435,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_FetchFailure)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -2495,7 +2538,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_DockerPullFailure)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Fetcher fetcher;
@@ -2596,7 +2641,9 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_DockerInspectDiscard)
slave::Flags flags = CreateSlaveFlags();
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
Shared<Docker> docker(mockDocker);
Future<Docker::Container> inspect;
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/tests/containerizer/docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/docker_tests.cpp b/src/tests/containerizer/docker_tests.cpp
index a4a2725..cfad368 100644
--- a/src/tests/containerizer/docker_tests.cpp
+++ b/src/tests/containerizer/docker_tests.cpp
@@ -52,7 +52,10 @@ class DockerTest : public MesosTest
{
virtual void TearDown()
{
- Try<Docker*> docker = Docker::create(tests::flags.docker, false);
+ Try<Docker*> docker =
+ Docker::create(tests::flags.docker, tests::flags.docker_socket,
+ false);
+
ASSERT_SOME(docker);
Future<list<Docker::Container>> containers =
@@ -75,7 +78,9 @@ TEST_F(DockerTest, ROOT_DOCKER_interface)
const string containerName = NAME_PREFIX + "-test";
Resources resources = Resources::parse("cpus:1;mem:512").get();
- Owned<Docker> docker(Docker::create(tests::flags.docker, false).get());
+ Owned<Docker> docker(Docker::create(tests::flags.docker,
+ tests::flags.docker_socket,
+ false).get());
// Verify that we do not see the container.
Future<list<Docker::Container> > containers = docker->ps(true, containerName);
@@ -222,7 +227,9 @@ TEST_F(DockerTest, ROOT_DOCKER_interface)
TEST_F(DockerTest, ROOT_DOCKER_CheckCommandWithShell)
{
- Owned<Docker> docker(Docker::create(tests::flags.docker, false).get());
+ Owned<Docker> docker(Docker::create(tests::flags.docker,
+ tests::flags.docker_socket,
+ false).get());
ContainerInfo containerInfo;
containerInfo.set_type(ContainerInfo::DOCKER);
@@ -248,7 +255,9 @@ TEST_F(DockerTest, ROOT_DOCKER_CheckCommandWithShell)
TEST_F(DockerTest, ROOT_DOCKER_CheckPortResource)
{
const string containerName = NAME_PREFIX + "-port-resource-test";
- Owned<Docker> docker(Docker::create(tests::flags.docker, false).get());
+ Owned<Docker> docker(Docker::create(tests::flags.docker,
+ tests::flags.docker_socket,
+ false).get());
// Make sure the container is removed.
Future<Nothing> remove = docker->rm(containerName, true);
@@ -318,7 +327,9 @@ TEST_F(DockerTest, ROOT_DOCKER_CancelPull)
AWAIT_READY_FOR(s.get().status(), Seconds(30));
- Owned<Docker> docker(Docker::create(tests::flags.docker, false).get());
+ Owned<Docker> docker(Docker::create(tests::flags.docker,
+ tests::flags.docker_socket,
+ false).get());
Try<string> directory = environment->mkdtemp();
@@ -340,7 +351,9 @@ TEST_F(DockerTest, ROOT_DOCKER_CancelPull)
// docker container works.
TEST_F(DockerTest, ROOT_DOCKER_MountRelative)
{
- Owned<Docker> docker(Docker::create(tests::flags.docker, false).get());
+ Owned<Docker> docker(Docker::create(tests::flags.docker,
+ tests::flags.docker_socket,
+ false).get());
ContainerInfo containerInfo;
containerInfo.set_type(ContainerInfo::DOCKER);
@@ -380,7 +393,9 @@ TEST_F(DockerTest, ROOT_DOCKER_MountRelative)
// docker container works.
TEST_F(DockerTest, ROOT_DOCKER_MountAbsolute)
{
- Owned<Docker> docker(Docker::create(tests::flags.docker, false).get());
+ Owned<Docker> docker(Docker::create(tests::flags.docker,
+ tests::flags.docker_socket,
+ false).get());
ContainerInfo containerInfo;
containerInfo.set_type(ContainerInfo::DOCKER);
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/tests/environment.cpp
----------------------------------------------------------------------
diff --git a/src/tests/environment.cpp b/src/tests/environment.cpp
index d9dc266..e40cde2 100644
--- a/src/tests/environment.cpp
+++ b/src/tests/environment.cpp
@@ -174,7 +174,7 @@ public:
DockerFilter()
{
#ifdef __linux__
- Try<Docker*> docker = Docker::create(flags.docker);
+ Try<Docker*> docker = Docker::create(flags.docker, flags.docker_socket);
if (docker.isError()) {
dockerError = docker.error();
} else {
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/tests/flags.hpp
----------------------------------------------------------------------
diff --git a/src/tests/flags.hpp b/src/tests/flags.hpp
index 3644956..06da36d 100644
--- a/src/tests/flags.hpp
+++ b/src/tests/flags.hpp
@@ -77,6 +77,14 @@ public:
"Where to find docker executable",
"docker");
+ add(&Flags::docker_socket,
+ "docker_socket",
+ "The UNIX socket path to be mounted into the\n"
+ "docker executor container to provide docker\n"
+ "CLI access to the docker daemon. This must be the\n"
+ "path used by the slave's docker image.\n",
+ "/var/run/docker.sock");
+
// This help message for --modules flag is the same for
// {master,slave,tests}/flags.hpp and should always be kept in
// sync.
@@ -150,6 +158,7 @@ public:
std::string source_dir;
std::string build_dir;
std::string docker;
+ std::string docker_socket;
Option<Modules> modules;
Option<std::string> isolation;
std::string authenticators;
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/tests/hook_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/hook_tests.cpp b/src/tests/hook_tests.cpp
index cfde49e..5ecb031 100644
--- a/src/tests/hook_tests.cpp
+++ b/src/tests/hook_tests.cpp
@@ -527,7 +527,8 @@ TEST_F(HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerHook)
Try<PID<Master>> master = StartMaster();
ASSERT_SOME(master);
- MockDocker* mockDocker = new MockDocker(tests::flags.docker);
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
Shared<Docker> docker(mockDocker);
slave::Flags flags = CreateSlaveFlags();
http://git-wip-us.apache.org/repos/asf/mesos/blob/9d882918/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index b2160f5..8435109 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -967,7 +967,7 @@ public:
class MockDocker : public Docker
{
public:
- MockDocker(const std::string& path) : Docker(path)
+ MockDocker(const std::string& path, const std::string &socket) : Docker(path, socket)
{
EXPECT_CALL(*this, pull(_, _, _))
.WillRepeatedly(Invoke(this, &MockDocker::_pull));