如何设置docker开机自启动,并设置容器自动重启

设置Docker开机自启动并设置容器自动重启可以使用systemd作为服务管理器来达成。下面是实现的具体步骤:

  1. 编写Docker Compose文件
    首先需要编写好你的Docker Compose文件,然后把它放在一个指定的目录下,可以参考以下示例:
version: "3"
services:
  nginx:
    image: nginx:latest
    container_name: my_nginx
    restart: always
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - "80:80"

这是一个简单的Nginx服务,镜像使用的是官方的最新版本,启用了容器自动重启,同时将宿主机的“nginx.conf”文件挂载到容器内。

  1. 创建systemd文件
    创建systemd文件的具体步骤如下:

(1)在“/etc/systemd/system”目录下新建一个“docker-compose.service”文件,文件名可以自行定义。

(2)编辑docker-compose.service文件,写入以下内容:

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/path/to/your/compose/directory
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

  • Description:服务的描述;
  • Requires:必需的服务,也就是指定依赖Docker;
  • After:在Docker启动之后启动该服务;
  • Type:指定服务启动类型为oneshot;
  • RemainAfterExit:在退出时仍然保持唤醒状态;
  • WorkingDirectory:指定Docker Compose文件所在目录;
  • ExecStart:指定启动命令,这里使用了docker-compose up -d命令,启动服务并且以后台方式运行;
  • ExecStop:指定服务关闭命令,这里使用了docker-compose down命令;
  • TimeoutStartSec:指定启动命令的超时时间。

  • 启动服务
    使用下面的命令启动服务:

sudo systemctl daemon-reload #重新载入systemd文件
sudo systemctl enable docker-compose.service #启用容器自启动
sudo systemctl start docker-compose.service #启动服务

至此,Docker开机自启动已经配置完成。当然,在每次更新docker-compose.yml文件后,需要重新执行以下命令来使改动生效:

sudo systemctl daemon-reload
sudo systemctl restart docker-compose.service

  1. 示例说明
    这里提供两个示例说明:

(1)使用Nginx作为负载均衡器,反向代理多个Web服务

version: '3.7'

services:
  nginx:
    image: nginx:stable
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - web1
      - web2
      - web3
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./ssl:/etc/nginx/ssl
  web1:
    image: php:7.4-apache
    container_name: web1
    volumes:
      - ./web1:/var/www/html
  web2:
    image: php:7.4-apache
    container_name: web2
    volumes:
      - ./web2:/var/www/html
  web3:
    image: php:7.4-apache
    container_name: web3
    volumes:
      - ./web3:/var/www/html

Certbot是一个用于自动部署Let's Encrypt SSL证书的神器,安装好之后可以使用官方提供的API接口自动获取和更新SSL证书:

version: '3.7'

services:
  certbot:
    image: certbot/certbot
    container_name: certbot
    command: certonly --webroot --webroot-path=/data/letsencrypt -d example.com -d www.example.com
    volumes:
      - ./letsencrypt:/etc/letsencrypt
      - ./html:/data/letsencrypt
      - ./certbot/log:/var/log/letsencrypt
    entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;"

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何设置docker开机自启动,并设置容器自动重启 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 数据库为什么需要备份?

    数据库是企业中非常重要的资产之一,包含着大量的重要数据,以及业务逻辑与关键性能参数。因此,数据库备份是维持企业生产力和业务持续运行的关键步骤之一。备份是指将原有数据库数据复制到另一个地方,旨在在原始数据库系统遇到故障或其他问题时,能够快速恢复数据。本文将详解为什么数据库需要备份。 防止数据丢失 在企业中,数据是极其重要的业务资产。数据丢失可能导致企业的生产中…

    MySQL 2023年3月10日
    00
  • redis lua脚本(优势) Redis支持LUA脚本的主要优势

    LUA脚本的融合将使Redis数据库产生更多的使用场景,迸发更多新的优势: 高效性:减少网络开销及时延,多次redis服务器网络请求的操作,使用LUA脚本可以用一个请求完成 数据可靠性:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。 复用性:LUA脚本执行后会永久存储在Redis服务器端,其他客户端可以直接复用 便捷性:实现程序热更新 可嵌…

    Redis 2023年4月13日
    00
  • SQL Server 总结复习 (二)

    下面是对”SQL Server 总结复习(二)”的完整攻略。 概述 这篇文章主要是关于SQL Server的一些总结,包括索引、事务和锁等常用的基本概念。同时还包括一些细节问题的解答,可以帮助我们更好地理解和使用SQL Server。 索引 索引的类型 普通索引:也叫非聚集索引,它的单次查询速度通常比聚集索引快,但是增加、更新和删除操作可能要更慢一些,在实际…

    database 2023年5月21日
    00
  • shell脚本自动修复mysql损坏的表

    当MySQL中的表损坏时,我们可以使用shell脚本自动修复它们。在本篇文章中,我将提供一个完整的攻略来实现这个过程。下面是步骤: 安装MySQL检查工具 在Ubuntu中,我们可以通过以下命令安装mysqlcheck。 sudo apt-get install mysql-client-core-5.7 创建shell脚本 我们可以使用vi或nano等文本…

    database 2023年5月22日
    00
  • MySQL定时任务(EVENT事件)如何配置详解

    MySQL定时任务(EVENT事件)可用于定期执行某些数据库操作。下面是配置MySQL定时任务(EVENT事件)的详细攻略。 步骤一:开启事件计划器 在MySQL中,事件计划器默认处于关闭状态。要开启事件计划器,请在MySQL客户端执行以下查询语句: SET GLOBAL event_scheduler=ON; 步骤二:创建事件 要创建事件,请使用以下语法:…

    database 2023年5月22日
    00
  • 怎么永久激活Navicat for MongoDB 附激活教程+注册机下载

    怎么永久激活Navicat for MongoDB 一、下载Navicat for MongoDB注册机 首先,我们需要下载Navicat for MongoDB的注册机,可以在百度上搜索“Navicat for MongoDB注册机下载”或在下载网站上进行搜索,如草窝网和天翼云盘等。 下载完注册机后,解压缩并运行软件。 二、下载Navicat for Mo…

    database 2023年5月22日
    00
  • 【面试】Spring事务面试考点吐血整理(建议珍藏)

    【面试】Spring事务面试考点吐血整理(建议珍藏) 1. Spring事务管理的常见方式 在spring中,常见的事务管理方式有以下几种: 编程式事务管理。 声明式事务管理 注解式事务管理 其中,声明式事务管理更为常用。下面详细讲解声明式事务管理。 2. 声明式事务管理 声明式事务管理采用AOP思想,通过解析事务注解为指定的方法增加事务相关的代码,从而实现…

    database 2023年5月22日
    00
  • postgresql数据库配置文件postgresql.conf,pg_hba.conf,pg_ident.conf

    PostgreSQL是一款功能强大的关系型数据库,它的配置文件主要有postgresql.conf、pg_hba.conf以及pg_ident.conf三个。其中postgresql.conf是PostgreSQL的主要配置文件,它提供了大量可配置的选项用来控制数据库系统的行为,pg_hba.conf和pg_ident.conf则主要关注在安全性方面。 下面…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部