How to execute docker exec commande inside a docker container ?

0 votes

I execute a command inside a docker container :

docker exec -i nullmailer sendmail -f username@gmail.com

The container response is :

the docker command does not exist.

How to execute docker exec command inside a docker container ?

Jul 19, 2018 in Docker by Nilesh
• 6,980 points
1,067 views

2 answers to this question.

0 votes

If your containers are running on the same host, you can run docker commands inside the container, by exposing the docker socket to the container.

To achieve this, when running the container, mount the docker.sock as such:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

Now you can execute docker commands from within the container.

answered Jul 19, 2018 by Kalgi
• 2,620 points
And for Windows it is:

`docker run -v //var/run/docker.sock:/var/run/docker.sock ...`
Hi @Werner, Can you put this up as an answer? It'll be helpful for other readers. Thank you!
0 votes

You need to get inside the container and then try to execute your command

Follow these steps:

  • Use docker ps to get the name of the existing container

  • Use the command docker exec -it <container name> /bin/bash to get a bash shell in the container

  • Or directly use docker exec -it <container name> <command> to execute whatever command you specify in the container.

answered Aug 13, 2019 by Sirajul
• 58,130 points

I am doing this same thing but it isn't working when I have a date variable in it. Have any ideas on how to get this to work? I want to be able to run it from a crontab. 

docker exec -it docker-partkeepr_database_1 bash -c mysqldump --databases partkeepr -upartkeepr -pUSERPASSWORD  > /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql

It comes back saying -bash: /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql: No such file or directory

Yet when I run the command mysqldump --databases partkeepr -upartkeepr -pUSERPASSWORD  > /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql 

after having already done a docker exec -it docker-partkeepr_database_1 bash command to get into the container it runs just fine and puts the date on it.  

Any suggestions? 

Hi,

I think you need to pass your command in a quote. Try with the below command once.

docker exec -it docker-partkeepr_database_1 bash -c "mysqldump --databases partkeepr -upartkeepr -pUSERPASSWORD  > /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql"

Related Questions In Docker

0 votes
1 answer

How to run a docker command from inside the container?

You must have come across the /var/run/docker.sock file, ...READ MORE

answered Jun 28, 2018 in Docker by Sophie may
• 10,100 points
1,358 views
+4 votes
17 answers
0 votes
1 answer

How to run a cron job inside a docker container?

Hii, crond works well with tiny on Alpine RUN apk add --no-cache ...READ MORE

answered May 18 in Docker by Niroj
• 66,940 points
1,298 views
+4 votes
4 answers

How To Access a Service on Host From a Docker Container?

Adding to kalgi's answer, You can also ...READ MORE

answered Oct 16, 2018 in Docker by lina
• 8,220 points

edited Oct 16, 2018 by lina 16,662 views
+2 votes
1 answer
+2 votes
1 answer

Deploy Docker Containers from Docker Cloud

To solve this problem, I followed advice ...READ MORE

answered Sep 3, 2018 in AWS by Priyaj
• 57,700 points
846 views
0 votes
2 answers
0 votes
1 answer