17 #ifndef __DOCKER_CONTAINERIZER_HPP__
18 #define __DOCKER_CONTAINERIZER_HPP__
61 class DockerContainerizerProcess;
90 const ContainerID& containerId,
91 const mesos::slave::ContainerConfig& containerConfig,
92 const std::map<std::string, std::string>&
environment,
96 const ContainerID& containerId,
100 const ContainerID& containerId);
103 const ContainerID& containerId);
106 const ContainerID& containerId);
113 const std::vector<Image>& excludedImages);
141 const ContainerID& containerId,
142 const mesos::slave::ContainerConfig& containerConfig,
143 const std::map<std::string, std::string>&
environment,
149 const ContainerID& containerId,
154 const ContainerID& containerId);
157 const ContainerID& containerId);
160 const ContainerID& containerId);
163 const ContainerID& containerId,
175 const ContainerID& containerId,
179 const ContainerID& containerId,
183 const ContainerID& containerId,
184 const mesos::slave::ContainerConfig& containerConfig);
188 const std::list<Docker::Container>&
containers);
191 const std::list<Docker::Container>&
containers);
195 const ContainerID& containerId,
196 const std::string& containerName);
200 const ContainerID& containerId);
203 const ContainerID& containerId,
208 const ContainerID& containerId,
212 const ContainerID& containerId,
216 const ContainerID& containerId,
221 const ContainerID& containerId,
226 const ContainerID& containerId,
231 const ContainerID& containerId,
235 const ContainerID& containerId,
240 const ContainerID& containerId,
245 const ContainerID& containerId);
248 const ContainerID& containerId);
251 const ContainerID& containerId,
252 const std::string& directory,
259 const ContainerID& containerId,
263 const ContainerID& containerId,
264 const std::set<Gpu>& allocated);
268 const ContainerID& containerId);
271 const ContainerID& containerId,
272 const std::set<Gpu>& deallocated);
279 void reaped(
const ContainerID& containerId);
283 const std::string& containerName,
299 const ContainerID&
id,
300 const mesos::slave::ContainerConfig& containerConfig,
301 const std::map<std::string, std::string>&
environment,
305 static std::string
name(
const ContainerID&
id)
310 Container(
const ContainerID&
id)
311 : state(FETCHING), id(id) {}
314 const ContainerID& _id,
315 const mesos::slave::ContainerConfig& _containerConfig,
316 const std::map<std::string, std::string>& _environment,
319 const std::string& containerWorkDir,
322 bool launchesExecutorContainer)
325 containerConfig(_containerConfig),
326 pidCheckpointPath(_pidCheckpointPath),
328 symlinked(symlinked),
329 containerWorkDir(containerWorkDir),
330 containerName(
name(id)),
331 launchesExecutorContainer(launchesExecutorContainer)
343 resources = containerConfig.resources();
345 if (containerConfig.has_task_info()) {
346 CHECK(resources.contains(containerConfig.task_info().resources()));
350 command = _command.
get();
352 command = containerConfig.command_info();
355 if (_container.
isSome()) {
356 container = _container.
get();
360 container = containerConfig.container_info();
375 if (launchesExecutorContainer) {
382 std::string
image()
const
384 if (containerConfig.has_task_info()) {
385 return containerConfig.task_info().container().docker().image();
388 return containerConfig.executor_info().container().docker().image();
391 bool forcePullImage()
const
393 if (containerConfig.has_task_info()) {
394 return containerConfig.task_info()
395 .container().docker().force_pull_image();
398 return containerConfig.executor_info()
399 .container().docker().force_pull_image();
435 const ContainerID id;
436 const mesos::slave::ContainerConfig containerConfig;
449 std::string containerWorkDir;
454 ContainerInfo container;
465 std::string containerName;
505 bool launchesExecutorContainer;
516 #endif // __DOCKER_CONTAINERIZER_HPP__
virtual process::Future< Nothing > pull(const ContainerID &containerId)
Definition: option.hpp:28
virtual process::Future< Nothing > recover(const Option< state::SlaveState > &state)
Try< Nothing > rm(const std::string &path)
Definition: rm.hpp:26
virtual process::Future< ContainerStatus > status(const ContainerID &containerId)
Definition: fetcher.hpp:49
Definition: docker.hpp:64
virtual process::Future< hashset< ContainerID > > containers()
virtual process::Future< Containerizer::LaunchResult > launch(const ContainerID &containerId, const mesos::slave::ContainerConfig &containerConfig, const std::map< std::string, std::string > &environment, const Option< std::string > &pidCheckpointPath)
Definition: resources.hpp:79
virtual process::Future< bool > destroy(const ContainerID &containerId, bool killed=true)
Definition: docker.hpp:121
virtual process::Future< Option< mesos::slave::ContainerTermination > > wait(const ContainerID &containerId)
bool isSome() const
Definition: option.hpp:115
virtual process::Future< ResourceStatistics > usage(const ContainerID &containerId)
Definition: docker.hpp:89
virtual process::Future< hashset< ContainerID > > containers()
virtual process::Future< Nothing > update(const ContainerID &containerId, const Resources &resources)
virtual process::Future< Option< mesos::slave::ContainerTermination > > wait(const ContainerID &containerId)
virtual process::Future< ResourceStatistics > usage(const ContainerID &containerId)
Environment * environment
DWORD pid_t
Definition: windows.hpp:187
Definition: containerizer.hpp:57
DockerContainerizer(const Flags &flags, Fetcher *fetcher, const process::Owned< mesos::slave::ContainerLogger > &logger, process::Shared< Docker > docker, const Option< NvidiaComponents > &nvidia=None())
virtual process::Future< Nothing > update(const ContainerID &containerId, const Resources &resources, bool force)
virtual process::Future< Containerizer::LaunchResult > launch(const ContainerID &containerId, const mesos::slave::ContainerConfig &containerConfig, const std::map< std::string, std::string > &environment, const Option< std::string > &pidCheckpointPath)
const T & get() const &
Definition: option.hpp:118
const std::string DOCKER_NAME_PREFIX
virtual process::Future< Nothing > fetch(const ContainerID &containerId)
virtual process::Future< bool > destroy(const ContainerID &containerId)
#define flags
Definition: decoder.hpp:18
URI image(const std::string &repository, const std::string &reference, const std::string ®istry, const Option< std::string > &scheme=None(), const Option< int > &port=None())
Definition: docker.hpp:30
virtual process::Future< ContainerStatus > status(const ContainerID &containerId)
const std::string DOCKER_SYMLINK_DIRECTORY
static Try< Resources > resources(const Flags &flags)
virtual process::Future< Nothing > recover(const Option< state::SlaveState > &state)
virtual ~DockerContainerizer()
Try< Nothing > create(const std::string &hierarchy, const std::string &cgroup, bool recursive=false)
std::string stringify(int flags)
const std::string DOCKER_NAME_SEPERATOR
Definition: process.hpp:493
DockerContainerizerProcess(const Flags &_flags, Fetcher *_fetcher, const process::Owned< mesos::slave::ContainerLogger > &_logger, process::Shared< Docker > _docker, const Option< NvidiaComponents > &_nvidia)
Definition: docker.hpp:125
constexpr const char * name
Definition: shell.hpp:41
virtual process::Future< Nothing > pruneImages(const std::vector< Image > &excludedImages)
static Try< DockerContainerizer * > create(const Flags &flags, Fetcher *fetcher, const Option< NvidiaComponents > &nvidia=None())