• 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
Information netPI Docker REST API for versions >= V1.1.4.0 Patrick@netPI 1 57 July-16th-2019, 02:45 PM
Last Post: Patrick@netPI
  [SOLVED] Pull Docker Image a.w.d.m. 8 34 July-8th-2019, 11:17 AM
Last Post: Armin@netPI
  [SOLVED] Docker issues AlexRegev 7 191 June-26th-2019, 02:14 PM
Last Post: AlexRegev
  docker timing MGharat 2 34 June-13th-2019, 08:57 AM
Last Post: Patrick@netPI
  Launching multi-containers at a time - Docker stacks Armin@netPI 0 21 June-4th-2019, 04:11 PM
Last Post: Armin@netPI
  [INFO]Docker DNS server Armin@netPI 0 19 March-7th-2019, 09:02 AM
Last Post: Armin@netPI
  [SOLVED] node-red Dashboard Docker Image for netPI? anrodriguez 1 23 February-7th-2019, 05:35 PM
Last Post: Armin@netPI
  Setup trusted Docker registry on a Raspberry Pi to host netPI containers Armin@netPI 12 637 January-31st-2019, 06:47 PM
Last Post: Armin@netPI
  [SOLVED] Keep getting a message that session expired in Docker SteveO 2 41 January-24th-2019, 11:50 AM
Last Post: Armin@netPI
  [SOLVED] Running Eclipse inside Docker Rahulsagar 6 52 January-21st-2019, 04:03 PM
Last Post: Rahulsagar

Forum Jump:


Users browsing this thread: 1 Guest(s)