• 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
  Docker exposed port don't send data on eth0 COswald 3 99 July-15th-2021, 02:10 PM
Last Post: Armin@netPI
  Docker not enabled tad 10 439 July-14th-2021, 08:54 AM
Last Post: Armin@netPI
  Accessing netPI web UI with REST API Armin@netPI 14 1,654 June-30th-2021, 05:06 AM
Last Post: Armin@netPI
  Docker amd64 instead of arm biancode 3 596 January-17th-2021, 09:40 PM
Last Post: Armin@netPI
  docker.service start failed EUROKEY 13 2,700 January-17th-2021, 07:52 PM
Last Post: Armin@netPI
  Accessing a modbus device connected to RTE port from Node-RED tad 10 2,450 October-2nd-2020, 07:21 AM
Last Post: Armin@netPI
  Docker cannot find image COswald 16 2,667 May-18th-2020, 07:15 AM
Last Post: COswald
  After „Rebuild“ of Docker neither the node-RED nor the dashboard can be accessed MAK 4 1,551 January-31st-2020, 02:14 PM
Last Post: MAK
  Web browser reports "insecure connection" when accessing netPI for the first time Armin@netPI 2 1,150 January-31st-2020, 07:07 AM
Last Post: Armin@netPI
  netPI access for remote PLC confign MGharat 3 1,090 October-15th-2019, 09:12 AM
Last Post: Armin@netPI

Forum Jump:


Users browsing this thread: 1 Guest(s)