【Linux docker 容器】关于想要让虚拟机在开机时候也docker自己启动,容器也自己启动,省去要自己开docker和容器

devtools/2025/3/11 9:10:36/

  1. 确认 Docker 服务状态

    首先,你需要确保 Docker 服务已经在虚拟机上安装并正确配置。你可以使用如下命令来检查 Docker 服务的状态:

     systemctl status docker.service

    如果服务没有运行,你可以使用以下命令启动它:

     systemctl start docker.service

  2. 设置 Docker 开机自启动

    使用 systemctl enable 命令来设置 Docker 服务在虚拟机开机时自动启动:

     sudo systemctl enable docker.service

二、设置 Docker 容器开机自动启动

  1. 创建或获取容器 ID/名称

    确保你已经有一个或多个 Docker 容器,并且知道它们的 ID 或名称。如果你还没有创建容器,你可以使用 docker run 命令来创建一个新容器。

  2. 如果你是在创建容器时就想设置自动重启策略,你可以在 docker run 命令中添加 --restart=always 选项。

    docker run --restart=always (容器id或者容器名)

  3. 设置容器自动重启策略

    使用 docker update 命令来设置容器的自动重启策略。你可以将重启策略设置为 always,这样容器就会在 Docker 服务启动时自动启动,并且在容器退出时也会自动重启。

    docker update --restart=always 容器ID或名称

    如果你不想要了就把always改成no就行

    附上容器提供的其他策略:

    Docker提供了几种重启策略,以帮助管理和维护容器的运行状态。以下是关于always、unless-stopped、on-failure这三种重启策略的详细介绍:

    看下策略之间先看下面的注意:

  4. always策略

    行为:无论容器的退出原因是什么,Docker都会自动重启该容器。

    适用场景:这个策略适用于需要持续运行的关键服务,如Web服务器、数据库、消息队列等。它确保这些服务在发生任何故障时都能自动恢复,从而提高系统的可靠性和可用性。

  5. unless-stopped策略

    行为:只要容器没有被手动停止,Docker就会自动重启它。如果容器被手动停止了,则不会自动重启,除非再次手动启动。

    适用场景:这个策略提供了更灵活的重启选项。它适用于那些需要在维护、升级或调试期间暂时停止的服务,但又不希望这些服务在停止后自动重启的情况。

  6. no:默认策略,在容器退出时不重启容器。也就是说,无论容器是正常退出还是异常退出,Docker 都不会自动重启它。
  7. on-failure:在容器非正常退出时(即退出状态码非0)才会重启容器。Docker 会一直重启容器,直到容器成功运行(退出状态码为0)或者达到重启次数限制(如果指定了的话)。如果没有指定重启次数,则会一直重启。
  8. on-failure:N:在容器非正常退出时重启容器,但最多重启N次。这里的N是一个正整数,表示Docker在容器退出状态码非0时会尝试重启容器的最大次数。
  9. 三、验证设置

  1. 重启虚拟机: 在设置了 Docker 服务和容器的自动启动后,你可以重启虚拟机来验证设置是否生效。

  2. 检查 Docker 服务和容器状态: 在虚拟机重启后,使用 systemctl status docker.service 命令来检查 Docker 服务的状态,确保它已经启动。然后,使用 docker ps 命令来检查容器是否已经自动启动。

你可以通过

 docker inspect 容器id或者名

找到下面这个名字,就能看到里面是什么策略了


http://www.ppmy.cn/devtools/166246.html

相关文章

Flink-DataStreamAPI-生成水印

下面我们将学习Flink提供的用于处理事件时间戳和水印的API,也会介绍有关事件时间、流转时长和摄取时间,下面就让我们跟着官网来学习吧 一、水印策略介绍 为了处理事件时间,Flink需要知道事件时间戳,这意味着流中的每个元素都需要…

Rust 模式匹配中的可反驳性与不可反驳性

1. 什么是可反驳模式和不可反驳模式? 1.1.不可反驳模式(Irrefutable Patterns) 不可反驳模式是 总能匹配任何可能值 的模式。例如,下面的 let 语句: let x 5;x 是一个不可反驳模式,它匹配 任何值&#…

#函数探幽

c内联函数 内联函数与其他函数的区别(这必须深入到程序的内部):编译的最终产品是可执行程序-----它是由机械语言指令组成。运行时程序,操作系统会把这些指令载入到计算机内存中,分配内存逐步执行。在调用函数时&#x…

深入解析K8s VolumeMounts中的subPath字段及其应用

文章目录 前言一、什么是subPath二、subPath使用场景三、场景一示例1.资源准备2.使用subPath字段 四、场景二示例1.资源准备2.测试 前言 在Kubernetes中,挂载存储卷是容器化应用的常见需求。然而当我们将整个卷挂载到容器中的某个目录时,可能会覆盖目标…

深入理解网络通信:从OSI七层模型到TCP/IP协议栈

在网络技术飞速发展的今天,无论是日常浏览网页、在线观看视频,还是企业级的数据交换和云计算服务,背后都离不开复杂而精密的网络通信机制。这些机制确保了数据能够在全球范围内的不同设备间准确无误地传输。为了更好地理解和掌握这一过程&…

HTML页面中divborder-bottom不占用整个底边,只占用部分宽度

根据豆包提示,有2个方案:使用使用伪元素 ::after,使用 linear-gradient 背景 方案1:通过伪元素 ::after 可以创建一个新的元素,并为其设置样式,模拟只显示一半宽度的底部边框。 解释: .half-…

反射是什么?

反射是Java语言的一个强大特性,它允许程序在运行时动态地检查和操作类、方法、字段等。通过反射,你可以实现一些非常灵活的功能,比如动态调用方法、访问私有字段等。 1. 什么是反射? 定义 反射(Reflection) 是Java语…

边缘计算盒子:解决交通拥堵的智能方案

在当今的智能交通系统中,边缘计算盒子(Edge Computing Box)正逐渐成为不可或缺的核心组件。这种设备通过将计算能力下沉到网络边缘,极大地提升了数据处理的速度和效率,特别适用于实时性要求极高的交通监控场景。本文将…