README.md

# DockerApi

Docker Engine API wrapper. Inspired [docker-api](https://github.com/swipely/docker-api)

## Installation

```elixir
def deps do
  [
    {:docker_api, "~> 0.1.1"}
  ]
end
```

## Usage

### Container

```elixir
# List containers.
iex> DockerApi.Container.list()
{:ok,
 [
   %DockerApi.Container{
     connection: %DockerApi.Connection{
       ipfamily: :local,
       unix_socket: '/var/run/docker.sock'
     },
     id: "1a50869e463662b4546c4dda0606e25165482080969ec690826db809d3ae9a70"
   }
 ]}

# Create a container.
iex> {:ok, container} = DockerApi.Container.create([query: [name: "test_container"], body: %{Image: "ubuntu:latest", Tty: true}])
{:ok,
 %DockerApi.Container{
   connection: %DockerApi.Connection{
     ipfamily: :local,
     unix_socket: '/var/run/docker.sock'
   },
   id: "cb5972cf722babb4fd2099da051d5850c59c92f314dec8262209d580ce6d4d8c"
 }}

# Start a container.
iex> DockerApi.Container.start(container)
{:ok,
 %DockerApi.Container{
   connection: %DockerApi.Connection{
     ipfamily: :local,
     unix_socket: '/var/run/docker.sock'
   },
   id: "cb5972cf722babb4fd2099da051d5850c59c92f314dec8262209d580ce6d4d8c"
 }}

# Stop a container.
iex> DockerApi.Container.stop(container)
{:ok,
 %DockerApi.Container{
   connection: %DockerApi.Connection{
     ipfamily: :local,
     unix_socket: '/var/run/docker.sock'
   },
   id: "cb5972cf722babb4fd2099da051d5850c59c92f314dec8262209d580ce6d4d8c"
 }}

# Restart a container.
iex> DockerApi.Container.restart(container)
{:ok,
 %DockerApi.Container{
   connection: %DockerApi.Connection{
     ipfamily: :local,
     unix_socket: '/var/run/docker.sock'
   },
   id: "cb5972cf722babb4fd2099da051d5850c59c92f314dec8262209d580ce6d4d8c"
 }}

# Inspect a container.
iex> DockerApi.Container.inspect(container)
{:ok,
 %{
   "AppArmorProfile" => "",
   "Args" => [],
   ...
 }}

# Pause a container.
iex> DockerApi.Container.pause(container)
{:ok,
 %DockerApi.Container{
   connection: %DockerApi.Connection{
     ipfamily: :local,
     unix_socket: '/var/run/docker.sock'
   },
   id: "cb5972cf722babb4fd2099da051d5850c59c92f314dec8262209d580ce6d4d8c"
 }}

# Unpause a container.
iex> DockerApi.Container.unpause(container)
{:ok,
 %DockerApi.Container{
   connection: %DockerApi.Connection{
     ipfamily: :local,
     unix_socket: '/var/run/docker.sock'
   },
   id: "cb5972cf722babb4fd2099da051d5850c59c92f314dec8262209d580ce6d4d8c"
 }}

# List processes running inside a container.
iex> DockerApi.Container.top(container)
{:ok,
 %{
   "Processes" => [
     ["root", "2046", "2019", "1", "22:56", "pts/0", "00:00:00", "/bin/bash"]
   ],
   "Titles" => ["UID", "PID", "PPID", "C", "STIME", "TTY", "TIME", "CMD"]
 }}

# Kill a container
iex> DockerApi.Container.kill(container)
{:ok,
 %DockerApi.Container{
   connection: %DockerApi.Connection{
     ipfamily: :local,
     unix_socket: '/var/run/docker.sock'
   },
   id: "cb5972cf722babb4fd2099da051d5850c59c92f314dec8262209d580ce6d4d8c"
 }}

# Remove a container
iex> DockerApi.Container.remove(container)
:ok
```