乐闻世界logo
搜索文章和话题

How do I make a Docker container start automatically on system boot?

1个答案

1

To enable Docker containers to start automatically at system boot, you can implement the following methods:

1. Using Docker's Restart Policies

Docker provides several restart policies that automatically restart containers upon exit or at system boot. The specific policies include:

  • no: Containers do not restart automatically.
  • always: Containers always restart.
  • unless-stopped: Containers restart until manually stopped.
  • on-failure: Containers restart only on abnormal exit (e.g., non-zero exit code).

For example, to create a container that automatically starts at system boot, include the --restart=always option when running the container:

bash
docker run --restart=always -d my_image

2. Using System Service Managers (e.g., systemd)

On systems using systemd (such as recent Ubuntu, CentOS, etc.), you can manage Docker container startup by creating a systemd service.

For example, create a file named myapp.service:

ini
[Unit] Description=My Docker Application Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a my_container ExecStop=/usr/bin/docker stop -t 2 my_container [Install] WantedBy=multi-user.target

Then, use the following commands to enable and start the service:

bash
systemctl enable myapp.service systemctl start myapp.service

3. Using Docker Compose

If you need to manage multiple containers, Docker Compose is a useful tool. In the docker-compose.yml file, set restart: always for each service:

yaml
version: '3' services: web: image: nginx restart: always

Then use docker-compose up -d to start the service. This ensures Docker Compose services automatically restart after a system reboot.

Conclusion

Based on specific application scenarios and environmental requirements, choose the most suitable method for container auto-start. Typically, for single or few containers, using Docker's restart policies is the simplest and quickest approach; for more complex configurations or multi-container management, using systemd or Docker Compose is more appropriate.

2024年8月10日 01:01 回复

你的答案