📜  docker 使容器永远运行 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:14:46.304000             🧑  作者: Mango

让 Docker 容器永远运行

Docker 是一个开源的容器化平台,它可以让你打包应用程序和它们的依赖项到一个可移植的容器中,并在任何地方运行。但是,使用 Docker 容器时,你可能遇到了容器不会永久性运行的问题。在本文中,我们将探讨如何让 Docker 容器永远运行。

1. 通过命令行让容器永远运行

要让 Docker 容器永远运行,可以在运行容器时使用 --restart 标志。该标志为 Docker 守护程序提供了指示,以确定容器何时应该自动重启。

以下命令将运行名为 "my-container" 的容器,并使其永远运行:

docker run --name my-container --restart always my-image

在上面的命令中,我们使用了 --restart always 标志,它告诉 Docker 守护程序,如果容器非正常退出,则应该重新启动容器。

2. 通过 Docker Compose 让容器永远运行

如果你正在使用 Docker Compose 管理多个容器,那么你可以在 docker-compose.yml 文件中为每个服务添加 restart 选项,以指示 Docker 应该始终重启该服务。以下是 docker-compose.yml 文件示例:

version: '3'
services:
  web:
    image: nginx:latest
    restart: always
    ports:
      - "80:80"

在上面的示例中,我们定义了一个名为 "web" 的服务,使用 nginx:latest 镜像,并配置了 restart: always,它指示 Docker 应该始终重启该服务。

3. 使用系统级工具让容器永远运行

除了使用 Docker 本身的功能之外,你还可以使用一些系统级工具来确保容器永远运行。其中一个工具是 systemd,它是 Linux 系统中常用的启动脚本和服务管理器。

要使用 systemd 管理 Docker 容器,你需要创建一个 my-container.service 文件,其中包含以下内容:

[Unit]
Description=My Docker Container
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=default.target

在上面的示例中,我们指定了服务的名称和描述,要求 Docker 服务已启动,并在 Docker 服务之后启动 my-container.service

然后,我们在 [Service] 部分中配置了容器的启动和停止命令,并设置了 Restart=always 来确保容器在非正常退出时重新启动。

最后,在 [Install] 部分中,我们将该服务添加到默认目标以便于启动时自动启用。

要启用 my-container.service,你可以使用以下命令:

sudo systemctl enable my-container.service
sudo systemctl start my-container.service
结论

在本文中,我们讨论了如何让 Docker 容器永远运行。你可以使用 Docker 自身的功能,如 --restart always 标志或 Docker Compose 的 restart 选项,也可以使用系统级工具,如 systemd,以确保容器在非正常退出时重新启动。无论你选择哪种方法,你都可以使你的 Docker 容器永远运行。