Docker启动容器电脑关闭后自动重启教程

1. 整体流程

通过以下流程,可以实现在电脑关闭后自动重启Docker容器:

flowchart TD
    A[设置Docker容器自动重启] --> B[创建systemd服务]
    B --> C[编辑service文件]
    C --> D[启用和启动服务]

2. 操作步骤

2.1 创建systemd服务

首先,我们需要创建一个systemd服务来控制Docker容器的启动和重启。systemd是一个Linux系统启动时用来管理系统和服务的工具。

  1. 打开终端,创建一个新的service文件:
sudo nano /etc/systemd/system/docker-autostart.service
  1. 在打开的文件中,输入以下内容:
[Unit]
Description=Docker Autostart

[Service]
ExecStart=/usr/bin/docker start -a my-container
ExecStop=/usr/bin/docker stop -t 2 my-container

[Install]
WantedBy=multi-user.target

上述代码中,ExecStart指定了在启动服务时需要执行的命令,此处我们使用docker start -a my-container来启动名为my-container的Docker容器。-a选项是用来附加到容器的标准输入和输出,以便我们可以在终端看到容器的输出。

ExecStop指定了在停止服务时执行的命令,此处我们使用docker stop -t 2 my-container来停止容器。-t 2选项表示等待2秒钟后再强制停止容器。

2.2 编辑service文件

现在,我们需要编辑刚刚创建的service文件,以便正确指定Docker容器的名称。

  1. 使用以下命令打开service文件:
sudo nano /etc/systemd/system/docker-autostart.service
  1. ExecStartExecStop中的my-container替换为你要自动启动的Docker容器的名称。

2.3 启用和启动服务

最后,我们需要启用和启动刚刚创建的service服务。

  1. 启用服务,使其在系统启动时自动启动:
sudo systemctl enable docker-autostart.service
  1. 启动服务:
sudo systemctl start docker-autostart.service

3. 代码注释

以下是具体代码的注释解释:

[Unit]
Description=Docker Autostart  # 服务的描述信息

[Service]
ExecStart=/usr/bin/docker start -a my-container  # 启动服务时执行的命令,使用docker start命令启动名为my-container的Docker容器,并附加到标准输入输出
ExecStop=/usr/bin/docker stop -t 2 my-container  # 停止服务时执行的命令,使用docker stop命令停止名为my-container的Docker容器,并等待2秒后强制停止

[Install]
WantedBy=multi-user.target  # 定义服务的启动目标

4. 关系图

以下是Docker启动容器电脑关闭后自动重启的关系图示例:

erDiagram
    Docker --|> systemd

以上是关于如何实现"docker 启动容器 电脑关闭后自动重启"的教程,通过创建systemd服务并配置相应的命令,我们可以实现在电脑关闭后自动重启Docker容器的需求。希望这篇文章对你有所帮助!