1:打开命令终端
是的,您需要访问 Linux 系统的命令终端来创建一个服务文件,该文件将自动重启 Docker 容器。因此,如果您在某个远程服务器上安装了 Docker,请使用 SSH 并访问服务器,而 GUI 桌面用户可以直接从应用程序菜单启动终端应用程序。
注意:您必须具有 sudo 权限。
2:检查Docker是否已安装
当然,要自动运行容器,必须在我们的系统上安装 Docker。要检查 Docker 的服务是否已启用并正在运行,请使用给定的命令:
sudo systemctl status docker
如果未启用,请使用:
sudo systemctl enable docker
而要启动服务:
sudo systemctl start docker
3. 使用 Docker 选项重新启动容器
有两种方法可以在系统启动时自动重启 Docker 容器。一种是使用 Docker 自己的命令,另一种是借助 systemd 单元文件,这里我们讨论这两种方式。
#1st 方式:使用 Docker 命令 – 推荐一个
在创建容器时,您可以使用 –restart unless-stopped 参数,该参数告诉 Docker 始终重新启动容器,除非它未手动停止。
注意:将 container-nam 替换为您的容器。
docker run -d --restart unless-stopped container-name
然而,如果您已经有一个活动容器,那么您可以更新其策略并使其在系统启动时自动重新启动。
docker update --restart unless-stopped container-name
甚至可以使用给定的命令更新所有现有容器的策略,使其自动重启:
docker update --restart unless-stopped $(docker ps -q)
#2nd 方式:Usingh SystemD Unit 文件
4:创建 Systemd 单元文件
现在,在您的终端中,通常切换到保存系统服务文件的目录。
cd /etc/systemd/system
接下来,创建一个新的服务文件,下面是执行此操作的命令:
sudo nano mycontainer.service
你可以用任何你想要的东西来改变服务的名称,例如,这里我们给它mycontainer,你可以定义一些其他的,以便于识别服务文件。
打开文件时,将以下代码粘贴到其中。
[Unit]
Description=My Docker Container
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a linuxshout
ExecStop=/usr/bin/docker stop -t 10 linuxshout
[Install]
WantedBy=multi-user.target
将“linuxshout”替换为要在系统启动时自动启动和运行的容器名称。
按 Ctrl+X,键入 Y,然后按 Enter 键保存文件。
好吧,如果不知道应用程序容器的名称,请运行:
docker ps -a
在结果的末尾,你将看到用于创建它的特定 Docker 映像的容器名称。
5:启动并启用容器服务
现在,让我们启动并启用您为容器创建的服务文件,以便它可以自动启动系统启动。
注意:将“mycontainer”替换为您创建的容器服务文件名。
sudo systemctl enable mycontainer.service
sudo systemctl start mycontainer.service
检查状态:
systemctl status mycontainer.service --no-pager -l
6:验证容器是否自动启动
如果要确认容器是否自动启动,只需重新启动计算机或系统即可。
sudo reboot
之后,再次联机后,运行给定的命令以查看容器是否处于活动状态。
sudo docker ps
因此,这是在 Linux 系统上创建服务文件的最快方法,该文件将在系统重新启动时自动启动 Docker 容器。如果需要,您还可以自定义服务以提供特定说明。