• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Accessing Docker daemon through remote CLI
#1
Is there any way by which I might be able to access the docker daemon running on the NetPI through a remote Docker CLI. Secondly, Is there any way I can access the Netpi other than its standard web GUI; for instance through SSH?

Regards,
Adeel Jamal
  Reply
#2
Yes there is an alternative method to take control of the Docker Daemon. As you know we are using portainer.io as web front end for the user to take control of Docker on netPI. portainer.io offers a RESTful api to take control of Docker commands from remote. What is not allowed on netPI cause of security reason to login through a SSH connection.

These commands are described here: https://gist.github.com/deviantony/77026...8d41bc42f8. Those commands are valid for portainer.io in the version >= 1.18.0. Since we are curently using portainer.io in the version 1.12.x on netPI the interface is slightly different.

For test purposes I made an Example using Node-RED to deploy a container on netPI from remote. I posted it here: https://forum.hilscher.com/Thread-Managi...ESTful-API
You never fail until you stop trying.“, Albert Einstein (1879 - 1955)

  Reply
#3
I checked accessing the netPI's Docker Web GUI portainer.io from a standard Linux shell using the command http 

I had to install the command first on my Linux using

$ apt-get install httpie

Afterwards I am able to call the RESTful API as described here (but adapted the documented interface to the portainer API V1.12.4 that is currently used on netPI.

First I called the "login" command while replacing the IP address and the password with my physical settings of course. You should do the same.

$ http --verify=no --json POST "https://<netPI's IP address>/portainer/api/auth" username=admin password=<your admin password>

I got back a response

{
    "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInJvbGUiOjEsImV4cCI6MTUzNTY1MzIyOH0.6qNXK3g5dNkXzf4a1_29i5m84Qs2zJerAcPQ1SzQMew"
}

The most important part is the value of 'jwt' being used for all ongoing commands as authentication token.

As next I created an "Docker Socket" endpoint (others do not exist with V1.12.4) using

$ http --verify=no --json POST "https://<netPI's IP address>/portainer/api/endpoints" name=myendpoint URL=unix:///var/run/docker.sock 'Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInJvbGUiOjEsImV4cCI6MTUzNTY1MzIyOH0.6qNXK3g5dNkXzf4a1_29i5m84Qs2zJerAcPQ1SzQMew'

I got back a response

{   "Id": 2  }

This Id is used now for all ongoing instructions. See the red "2" to see where to position this ID in the next example where I am listing the images available on my  netPI:

http --verify=no --json GET "https://<netPI's IP address>/portainer/api/docker/2/images/json" 'Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInJvbGUiOjEsImV4cCI6MTUzNTY1MzIyOH0.6qNXK3g5dNkXzf4a1_29i5m84Qs2zJerAcPQ1SzQMew' all==1

I got a response

[

    {
        "Containers": -1,
        "Created": 1535622420,
        "Id": "sha256:9ba50652894d963b79bd877983b7c9c36693f1cece972e274e12419f43d9bde7",
        "Labels": {
            "description": "Open-PLC - IEC 61131-3 compatible open source PLC",
            "io.resin.architecture": "armv7hf",
            "io.resin.qemu.version": "2.9.0.resin1-arm",
            "maintainer": "netpi@hilscher.com",
            "version": "V1.0.0"
        },
        "ParentId": "",
        "RepoDigests": [
            "hilschernetpi/netPI-openplc@sha256:e8df83fd4b0c20f7677ed699af02277d023ebd784a50f4f8f78fb3abbf355157"
        ],

        "RepoTags": [
            "hilschernetpi/netPI-openplc:latest"
        ],

        "SharedSize": -1,
        "Size": 658380690,
        "VirtualSize": 658380690
    }
]

The rest of the API commands work in the same/similar way ... just continue to read the documentation.


Thx
Armin
You never fail until you stop trying.“, Albert Einstein (1879 - 1955)

  Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  [INFO] RESTful API for Docker remote control Armin@netPI 0 87 December-17th-2018, 10:15 AM
Last Post: Armin@netPI
  Remote Access Jonas.Sellmann@outlook.de 12 454 September-20th-2018, 10:20 AM
Last Post: Armin@netPI
  Accessing netPI web GUI with HTTP REST Armin@netPI 1 233 September-11th-2018, 06:51 AM
Last Post: Armin@netPI
  Resart/Access NetPi from Remote Jonas.Sellmann@outlook.de 11 391 August-1st-2018, 11:06 AM
Last Post: Jonas.Sellmann@outlook.de
  Edge Gateway Manager - Docker Management HagnSchool 1 89 June-8th-2018, 07:50 AM
Last Post: Armin@netPI
  Docker issue after few hours vdupont 8 268 March-4th-2018, 12:05 PM
Last Post: Armin@netPI
  Portainer as a docker image? vdupont 1 137 February-17th-2018, 09:55 AM
Last Post: Armin@netPI
  Are USB interfaces exposed by docker to the containers? vdupont 1 88 February-17th-2018, 08:48 AM
Last Post: Armin@netPI
  Kann keine Docker Images laden rjenni 1 94 January-25th-2018, 09:23 AM
Last Post: Armin@netPI
  Adressing netPI with IE11 over its hostname let Docker tile fail to open Armin@netPI 0 67 January-11th-2018, 07:33 AM
Last Post: Armin@netPI

Forum Jump:


Users browsing this thread: 1 Guest(s)