Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I keep docker container running?

I want to run multiple containers automatically and create something,

but some images, such as swarm, will automatically stop after run or start.

I already try like that

docker run -d swarm

docker run -d swarm /bin/bash tail -f /dev/null

docker run -itd swarm bash -c "while true; do sleep 1; done"

but 'docker ps' show nothing, and I tried to build Dockerfile by typing:

FROM swarm
ENTRYPOINT ["echo"]

and The image does not run with error message :

docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"echo\\\": executable file not found in $PATH\"\n".

I can't understand this error... How can I keep swarm container running..?

(Sorry,my English is not good))

like image 342
haeny Avatar asked Aug 02 '17 12:08

haeny


People also ask

How do you make a container run forever?

The easiest way to keep the container running is to change its entry point to a command that will continue running forever. Let's use tail -f /dev/null . Rechecking the running container via docker ps -a we can see that our container has been up and running for several seconds and hasn't stopped yet.

How do I run a docker container without stopping?

Detaching Without Stopping Press Ctrl-P, followed by Ctrl-Q, to detach from your connection. You'll be dropped back into your shell but the previously attached process will remain alive, keeping your container running. You can check this by using docker ps to get a list of running containers.

How do you run a container without exiting it?

Instead of running with docker run -i -t image your-command , using -d is recommended because you can run your container with just one command and you don't need to detach terminal of container by hitting Ctrl + P + Q .

How do I keep docker images alive?

If you would like to keep your container running in detached mode, you need to run something in the foreground. An easy way to do this is to tail the /dev/null device as the CMD or ENTRYPOINT command of your Docker image. This command could also run as the last step in a custom script used with CMD or ENTRYPOINT .


1 Answers

First of all you don't want to mix the -i and -d switches. Either you would like to run the container in interactive or detached mode. In your case in detached mode:

docker run -d swarm /bin/bash tail -f /dev/null

There are also no need to allocate a tty using the -t flag, since this only needs to be done in interactive mode.

You should have a look at the Docker run reference

like image 190
Cyclonecode Avatar answered Sep 24 '22 21:09

Cyclonecode