Dockerex is a lightweight Docker Remote API Client for Elixir that supports SSL connection to a Docker Host or a Docker Swarm manager.
Dockerex is tested against latest Docker Remote API v1.24.
The package can be installed as:
- Add
dockerex
to your list of dependencies inmix.exs
:
def deps do
[{:dockerex, "~> 0.1.0"}]
end
- Ensure
dockerex
is started before your application:
def application do
[applications: [:dockerex]]
end
- Config your docker host in
config.exs
config :dockerex,
host: "https://10.10.10.1:2376/",
options: [
ssl: [
{:certfile, "/path/to/your/cert.pem"},
{:keyfile, "/path/to/your/key.pem"}
]
]
You may also establish a connection to the docker engine over a unix socket. To
do this, set the host variable in your config to "http+unix://PATH/"
. Note
that PATH
has to be URI-encoded, i.e. the default socket path would be
%2Fvar%2Frun%2Fdocker.sock
.
Dockerex is a lightweight client, which means you need to specify the endpoint and original docker params in a map format.
Before making any requests, you have to start the HTTP client by calling
HTTPoison.start
.
Some examples:
result = Dockerex.Client.post("containers/create", %{"Image": "nginx",
"Tty": true,
"HostConfig": %{"RestartPolicy": %{ "Name": "always"}},
"Cmd": ["start.sh"]})
cid = result["Id"]
Dockerex.Client.post("containers/#{cid}/start")
Dockerex.Client.post("containers/#{cid}/stop")
Dockerex.Client.get("containers/#{cid}/logs?stderr=1&stdout=1×tamps=0&since=#{DateTime.to_unix(DateTime.utc_now) - 5}")
Dockerex.Client.delete("containers/#{cid}")