DockerClientpp
A simple Docker SDK for C++
DockerClient.hpp
1 #ifndef DOCKER_CLIENT_PP_DOCKERCLIENT_H
2 #define DOCKER_CLIENT_PP_DOCKERCLIENT_H
3 
4 #include "Archive.hpp"
5 #include "ExecRet.hpp"
6 #include "Response.hpp"
7 #include "SimpleHttpClient.hpp"
8 #include "defines.hpp"
9 
10 namespace DockerClientpp {
11 
15 class DockerClient {
19  DockerClient(const DockerClient &) = delete;
23  DockerClient &operator=(const DockerClient &) = delete;
24 
25  public:
26  DockerClient(DockerClient &&) = default;
27 
28  ~DockerClient();
29 
30  public:
37  DockerClient(const SOCK_TYPE type = SOCK_UNIX,
38  const string &path = "/var/run/docker.sock");
39 
47  void setAPIVersion(const string &api);
48 
54  std::vector<std::string> listImages();
55  *
56  * @return Images list in json format
57  */
58  string listImages();
59 
74  string createContainer(const json &config, const string &name = "");
75 
80  void startContainer(const string &identifier);
81 
86  void stopContainer(const string &identifier);
87 
95  void removeContainer(const string &identifier, bool remove_volume = false,
96  bool force = false, bool remove_link = false);
97 
107  string createExecution(const string &identifier, const json &config);
108 
121  string startExecution(const string &id, const json &config = {});
122 
129  string getContainerStats(const string &id);
130 
137  string inspectExecution(const string &id);
138 
147  void updateContainer(const std::string &id, const json &config);
148 
160  ExecRet executeCommand(const string &identifier, const vector<string> &cmd);
161 
169  void putFiles(const string &identifier, const vector<string> &files,
170  const string &path);
171 
179  void getFile(const string &identifier, const string &file,
180  const string &path);
181 
182  json downloadImage(const string &imageName, const string &tag={}, const json &config={});
183 
192  json commitImage(const string &idOrName, const string &repo, const string &message, const string &tag={}, const json &config={});
193 
194  void killContainer(const std::string &idOrName);
195 
196  int waitContainer(const std::string &idOrName, const std::string &condition = "not-running");
197 
198  string getLogs(const string &id,bool stdoutFlag=true, bool stderrFlag=true, int tail=-1);
199 
200  string inspectContainer(const string &id) ;
201 
202  string getLongId(const std::string &name);
203 
204  std::vector<std::string> getRunningContainers();
205  private:
206  class Impl;
207  unique_ptr<Impl> m_impl;
208 };
209 } // namespace DockerClientpp
210 
211 #endif /* DOCKER_CLIENT_PP_DOCKERCLIENT_H */
void startContainer(const string &identifier)
Start a stopped or created container.
string createExecution(const string &identifier, const json &config)
Set up an exec running instance in a running container.
string createContainer(const json &config, const string &name="")
Create a new container based on existing image.
Docker client class.
Definition: DockerClient.hpp:15
void putFiles(const string &identifier, const vector< string > &files, const string &path)
Put files to container.
ExecRet executeCommand(const string &identifier, const vector< string > &cmd)
Execute a command in a running container, like docker exec command.
string startExecution(const string &id, const json &config={})
Start a execution instance that is set up previously.
std::vector< std::string > listImages()
List all images.
void getFile(const string &identifier, const string &file, const string &path)
Get file to container.
string inspectExecution(const string &id)
Inspect a execution instance.
void setAPIVersion(const string &api)
Set Docker daemon API version.
Definition: ExecRet.hpp:8
void stopContainer(const string &identifier)
Stop a running container.
string getContainerStats(const string &id)
Get statistics for a execution instance.
void removeContainer(const string &identifier, bool remove_volume=false, bool force=false, bool remove_link=false)
Remove a container.
void updateContainer(const std::string &id, const json &config)
Update the configurations of already created container.
json commitImage(const string &idOrName, const string &repo, const string &message, const string &tag={}, const json &config={})
Create a new image from container.