exited with code 0 docker

会有一股神秘感。 提交于 2020-01-30 22:43:52

问题


I'm trying to launch container using docker-compose services.But unfortunetly, container exited whith code 0. Containers is build thanks to a repository which is from a .tar.gz archive. This archive is a Centos VM.

I want to create 6 container from the same archive. Instead of typing 6 times docker command, I would like to create a docker-compose.yml file where i can summarize their command and tag.

I have started to write docker-compose.yml file just for create one container.

Here is my docker-compose.yml :

version: '2'
services:
  dvpt:
   image: compose:test.1
   container_name: cubop1
   command: mkdir /root/essai/
   tty: true

Do not pay attention to the command as I have just to specify one.

So my question is, why the container is exiting ? Is there a another solution to build these container at the same time ?

Thanks for your responses.


回答1:


The answer is actually the first comment. I'll explain Miguel's comment a bit.

First, we need to understand that a Docker container runs a single command. The container will be running as long as that process the command started is running. Once the process is completed and exits then the container will stop.

With that understanding, we can make an assumption of what is happening in your case. When you start your dvpt service it runs the command mkdir /root/essai/. That command creates the folder and then exits. At this point, the Docker container is stopped because the process exited (with status 0, indicating that mkdir completed with no error).




回答2:


You can end with command like tail -f /dev/null

It often works in my docker-compose.yml with

command: tail -f /dev/null

And it is easy to see how I keep the container running.

docker ps




回答3:


One solution is to create a process that doesn't end, an infinite loop or something that can run continuously in the background. This will keep the container opened because the the process won't exit.

This is very much a hack though. I'm still looking for a better solution.

The Zend Server image does something like this. In their .sh script they have a final command:

exec /usr/local/bin/nothing

Which executes a file that continuously runs in the background. I've tried to copy the file contents here but it must be in binary.

EDIT: You can also end your file with /bin/bash which begins a new terminal process in the container and keeps it from closing.



来源:https://stackoverflow.com/questions/44884719/exited-with-code-0-docker

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!