Managing containers using Portainer API

Portainer provides a sleek interface to swift through Docker environments It allows you to manage your containers, images, networks and volumes. Portainer itself will run in another container of your docker environment.

Setting up a Portainer

sudo mkdir /data
sudo mkdir /data/portainer_data

docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer_data:/data portainer/portainer

Image Registry

Portainer, is not restricted to just docker registry hub. It can talk to any image registry which follows the image registry protocol definition. I have been primarily using the Google Cloud registry and with few Auth configuration, i can able to connect to gcr.io to pull and push images.

Web Interface & API

The web interface provides ui to quickly create and manage the images and containers. Portainer also exposes REST Api to acheive the same through which any one can automate the container infrastructure provisioning.

API End Points

Get Auth Token

POST /api/auth

Sample Usage

curl -X POST http://192.168.1.6:9000/api/auth --data '{"username":"port-admin","password":""}'

Create Image

POST /api/endpoints/1/docker/images/create?fromImage=IMAGENAME&tag=TAGNAME

POST :9000/api/endpoints/1/docker/containers/create \ "Authorization: Bearer <TOKEN>" \ name=="web01" Image="nginx:latest" \ ExposedPorts:='{ "80/tcp": {} }' \ HostConfig:='{ "PortBindings": { "80/tcp": [{ "HostPort": "8080" }] } }'

Create Container

POST /api/endpoints/1/docker/containers/create?name=CONT_NAME

Start a Container

POST /api/endpoints/1/docker/containers/CONT_ID/start

Stop a Container

POST /api/endpoints/1/docker/containers/CONT_ID/stop

Remove a Container

DELETE /api/endpoints/1/docker/containers/CONT_ID?force=true&v=1

Reference Links :