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 <[email protected]> Authored: Tue Sep 1 00:08:23 2015 +0000 Committer: Timothy Chen <[email protected]> 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));
