Hi dear friends;
I install n8n on ubuntu server via docker-compose (no.1)
also I run another docker image (no.2) on this server.
Can I probably call another docker commands (no.2) from any node in n8n (no.1)?
Best regards;
Hi dear friends;
I install n8n on ubuntu server via docker-compose (no.1)
also I run another docker image (no.2) on this server.
Can I probably call another docker commands (no.2) from any node in n8n (no.1)?
Best regards;
Yes you absolutely can in multiple ways.
If n8n is hosted on the same machine as your Docker instance, you could try the Execute Command node.
If n8n is hosted on a different machine or inside Docker itself, you could try the SSH node.
You could use the Docker API
Whichever way works best is up to you. Personally, I’d give the API a whirl: Docker Engine API v1.41 Reference
Yes, you can.
Make sure you start the container executing the commands with bind mount /var/run/docker.sock
so that you have access to the socket. This way you can run commands against the bind mounted socket as if you were executing them from the host.
thanks @joeldeteves, @lu4t
In fact:
volumes:
- /var/run/docker.sock:/var/run/docker.sock
with SSH Node everything work good but when I run via Execute Command Node it show bellow error:
Problem in node ‘Execute Command‘
Command failed: docker run --env-file .env -v $HOME:/root/.******** /bin/sh: docker: not found
That’s because the N8N container doesn’t have docker installed on it.
You should do a little reading on how Docker works. A simple way to do it might be to use a cURL
command: How to query Docker socket using curl – sleeplessbeastie's notes - actually it might be better to use the http
node for this rather than executing cURL manually.
I’ve created a Dockerfile
with the following:
FROM n8nio/n8n:latest
RUN apk update && apk add --no-cache docker-cli
RUN addgroup -g 116 docker && addgroup node docker
runned docker-compose build
my docker-compose.yml:
services:
n8n:
#image: n8nio/n8n:latest
build: .
...
volumes:
- /var/run/docker.sock:/var/run/docker.sock
hope this helps
Thank you for the guide!
At first it didn’t worked but then I found out that your addgroup -g <number> docker
was the problem on my machine. Why? The docker group id (<number>
) in the docker image must be in sync with the docker group id on the host machine which links the /var/run/docker.socket
into docker container.
it can be found with getent group docker | awk -F: '{print $3}'
Thank you very much, that works !
Hi there im facing this same issue im using Elestio ci/cd on my pipeline i have n8n and other apps runing on individual containers i have updated my n8n docker-compose.yml file to include docker.sock just like you stated earlier my uid and gid with the host machine is the same, but i didn’t install docker cli inside my n8n container on my n8n container terminal i can run docker exec and exec functions in other container but on my n8n website when i use execute command it keeps saying docker not found, so i want to know is it compulsory i install docker cli in my n8n container before i can run docker exec with n8n execute command on n8n website