To keep the Docker container running and not exiting, there are many ways to do it. In this article, we'll cover some commonly used methods and their pros and cons.
Docker provides an option --restart
, which can automatically restart the container when the container exits abnormally. There are three optional values, namely no
, on-failure
and always
, which respectively correspond to no restart, restart on abnormal exit and always restart. Specific example:
docker run --restart=always IMAGE_NAME
The advantage of using the --restart
option is that it is simple and easy to use. You only need to add an option to the command line. But if an error occurs in the container, it will continue to restart until the container is manually stopped. This can lead to code instability and data loss.
Docker Compose is a tool that can define and run multiple Docker containers. It can describe the relationship between containers and startup parameters through a yml file. Add the following configuration in the docker-compose.yml
file:
version: '3' services: app: build: . restart: always
Then you can use the docker-compose
command to start the container:
docker-compose up -d
# The ##restart: always option tells Docker to automatically restart the container when the container exits abnormally. The advantage of this method is that it can manage multiple containers, which is convenient and fast, but there is still the problem of containers restarting all the time.
supervisor daemon to start a Node.js service:
npm install -g supervisor
file and add the following content:
[supervisord] nodaemon=true [program:app] command=supervisor app.js directory=/app autostart=true autorestart=true user=root
RUN apt-get update && apt-get install -y supervisor COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
docker build -t IMAGE_NAME . docker run -d IMAGE_NAME
systemd to monitor Docker containers:
, the file content is as follows :
[Unit] Description=My Docker Container [Service] ExecStart=/usr/bin/docker start -a myapp Restart=always RestartSec=10s ExecStop=/usr/bin/docker stop -t 2 myapp [Install] WantedBy=default.target
myapp. When a problem occurs with the container,
systemd will automatically restart the container. Use the
systemctl command to enable this service:
sudo systemctl daemon-reload sudo systemctl enable mydocker.service sudo systemctl start mydocker.service
The above is the detailed content of docker never exits container. For more information, please follow other related articles on the PHP Chinese website!