当前位置: 首页 > news >正文

【Docker】配置文件

问题

学习Docker期间会涉及到docker的很多配置文件,可能会涉及到的会有:

/usr/lib/systemd/system/docker.service  【docker用于被systemd管理的配置文件】

/etc/systemd/system/docker.service.d【覆盖配置文件的存放处】

/etc/systemd/system/multi-user.target.wants/docker.service【开机启动的配置文件软链接】

/etc/sysconfig/docker【这个配置文件是用来兼容老版本的linux的,一般不建议使用,而是用下面的daemon.json方式】

/etc/docker/daemon.json【这个配置文件是json格式,跨平台的,也是docker官方推荐的】

这么多配置文件,一开始也会有点蒙,到底应该配置那个文件才行。自己整理了一些,做下记录方便以后复习。

介绍

1、/usr/lib/systemd/system/docker.service

/usr/lib/systemd/system/docker.service 文件是 systemd 用来管理 Docker 服务的单元文件。systemd 【【Linux】Systemd介绍-网络整理-CSDN博客】是一个系统和服务管理器,用于 Linux 操作系统中启动和管理系统服务。这个 .service 文件定义了如何启动、停止以及管理 Docker 守护进程(daemon),简单说这个配置文件其实是在linux系统中已经使用了systemd 的情况下,各软件安装后形成的一个配置文件,比如docker.service配置文件里面的内容就是根据systemd规范来写的配置,告诉systemd 进程怎么管理和启动docker。内容如下:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service time-set.target
Wants=network-online.target containerd.service
Requires=docker.socket[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd '--config-file=/etc/docker/daemon.json 【这个是我自己后面加的】' -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
# Older systemd versions default to a LimitNOFILE of 1024:1024, which is insufficient for many
# applications including dockerd itself and will be inherited. Raise the hard limit, while
# preserving the soft limit for select(2).
LimitNOFILE=1024:524288# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes# kill only the docker process, not all processes in the cgroup
KillMode=process
OOMScoreAdjust=-500[Install]
WantedBy=multi-user.target

一般不建议直接修改文件里面的内容,因为在版本升级时,会直接覆盖这个文件,到时自己的配置就会被覆盖,那么针对这种情况怎么办? 然后下面介绍第二个配置

2、/etc/systemd/system/docker.service.d/

/etc/systemd/system/docker.service.d/ 目录用于存放 Docker 服务单元文件【就是指/usr/lib/systemd/system/docker.service这个文件】的覆盖配置。这个目录允许系统管理员在不直接修改原始服务单元文件的情况下,对 Docker 服务进行自定义配置。这种方法的好处是,当你更新 Docker 包时,这些覆盖配置不会被新版本的默认配置文件所覆盖,从而保持了你所做的更改。意思就是说你可以在docker.service.d目录下新建xx.conf配置,然后里面指定[Service]或者[Unit]等,然后systemd启动docker时会用这个xx.conf配置文件中的[Service]配置项覆盖/usr/lib/systemd/system/docker.service文件中对应的[service]项中对应的配置

在这个目录下,你可以创建一个或多个以 .conf 结尾的文件,每个文件都可以包含 [Service][Unit][Install] 等节,用来覆盖 /usr/lib/systemd/system/docker.service 中相应的设置。

例如,如果你想添加一些环境变量或者修改 ExecStart 命令行参数,可以创建一个名为 override.conf 的文件:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/override.conf

然后,在 override.conf 文件中添加如下内容:

[Service]
Environment="DOCKER_OPTS=--storage-driver=overlay2"
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

上面的例子中:

  • Environment 行添加了一个环境变量。
  • ExecStart= 清除了原来的 ExecStart 值。
  • 新的 ExecStart 指定了新的启动命令。

编辑完成后,你需要重新加载 systemd 配置并重启 Docker 服务来应用更改:

sudo systemctl daemon-reload
sudo systemctl restart docker

使用这种方式,你可以灵活地调整 Docker 服务的行为,而不需要担心未来的软件更新会破坏你的定制设置。同时,这也遵循了 systemd 的最佳实践,即尽量避免直接修改 /usr/lib/systemd/system/docker.service 的原版单元文件。

3、/etc/systemd/system/multi-user.target.wants/docker.service

这个文件是一个软链接,它指向:

[root@localhost ]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
这个配置文件指向的还是: /usr/lib/systemd/system/docker.service

4、/etc/sysconfig/docker

以下是 通义千问给出的答案:

/etc/sysconfig/docker 是一个配置文件,主要用于基于 System V init 或者与之兼容的初始化系统的 Linux 发行版(如一些较旧版本的 CentOS 和 RHEL)中。这个文件用来设置 Docker 守护进程(daemon)启动时的环境变量和其他一些选项。它允许系统管理员在不直接修改 Docker 服务单元文件的情况下定制 Docker 的行为。

主要用途
  • 设置环境变量:你可以在 /etc/sysconfig/docker 文件中定义环境变量,这些变量会在 Docker daemon 启动时被使用。例如,可以设置 DOCKER_OPTS 来传递额外的命令行参数给 Docker daemon。
  • 自定义 Docker 配置:除了环境变量,还可以设置其他配置项,比如日志级别、存储驱动等,具体取决于你的 Docker 版本和发行版的具体实现。

一个典型的 /etc/sysconfig/docker 文件可能看起来像这样:

# /etc/sysconfig/docker 示例
# 设置 Docker daemon 的选项
DOCKER_OPTS="--storage-driver=devicemapper --dns 8.8.8.8 --dns 8.8.4.4"# 其他可能的设置
# 日志级别
DOCKER_LOGLEVEL="info"

在这个例子中:

  • DOCKER_OPTS 变量用于指定 Docker daemon 的启动参数,比如指定了存储驱动为 devicemapper 并设置了 DNS 服务器。
  • DOCKER_LOGLEVEL 可以用来设定 Docker 的日志级别,这取决于 Docker 的具体实现和支持的选项。
使用场景

如果你的系统还在使用 System V init 脚本来管理服务,那么 /etc/sysconfig/docker 就是定制 Docker 守护进程配置的主要方式之一。然而,随着越来越多的现代 Linux 发行版采用 systemd 作为默认的服务管理系统,通常会推荐使用 /etc/docker/daemon.json 来进行 Docker daemon 的配置,并且可以通过创建覆盖文件(如 /etc/systemd/system/docker.service.d/override.conf)来进一步调整 systemd 服务单元的行为。

注意事项
  • 如果你正在使用的 Linux 发行版已经迁移到了 systemd,那么建议优先考虑使用 /etc/docker/daemon.json 和 systemd 的覆盖机制来配置 Docker。
  • 在修改任何配置文件之前,最好备份原始文件,以防出现问题时能够恢复。
  • 修改完配置文件后,需要重启 Docker 服务才能使更改生效。

5、/etc/docker/daemon.json

    一句话就是docker官方推荐使用这个跨平台的json格式文件来配置docker的 daemon进程。

所以除了/usr/lib/systemd/system/docker.service 其他的几种可以不关心.

看网络资料说:这个配置文件需要 docker 版本高于 1.12.6,没有测试过。

所以综合和上面的介绍,我个人认为笔记正确的配置是:

1、在/etc/systemd/system/docker.service.d/目录创建一个覆盖配置 ,我创建了一个override.conf文件,内容如下,

 

 然后:

systemctl daemon-reload

systemctl restart docker

: systemctl status docker 查看状态,可以看到Drop-In 指向了覆盖配置,说明覆盖配置使用了

然后我们可以在这个覆盖配置中的: ExecStart  启动命令项中加入: 其他配置文件记录

文件内容如下:

docker info 指令查看下:

说明配置起作用了。

网络参考:【docker配置参数详解---/etc/docker/daemon.json完整参数_docker daemon.json配置-CSDN博客】

相关文章:

【Docker】配置文件

问题 学习Docker期间会涉及到docker的很多配置文件,可能会涉及到的会有: /usr/lib/systemd/system/docker.service 【docker用于被systemd管理的配置文件】 /etc/systemd/system/docker.service.d【覆盖配置文件的存放处】 /etc/systemd/system/mul…...

坐标系变换总结

二维情况下的转换 1 缩放变换 形象理解就是图像在x方向和y方向上放大或者缩小。 代数形式: { x ′ k x x y ′ k y y \begin{cases} x k_x x \\ y k_y y \end{cases} {x′kx​xy′ky​y​ 矩阵形式: ( x ′ y ′ ) ( k x 0 0 k y ) ( x y ) \be…...

数据在内存中的存储【上】

一.整型在内存中的存储 在讲解操作符的时候,我们就讲过了下面的内容: 整数的2进制表示方法有三种,即 原码、反码和补码 有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用0表示"正"&#xff…...

Prometheus之Pushgateway使用

Pushgateway属于整个架构图的这一部分 The Pushgateway is an intermediary service which allows you to push metrics from jobs which cannot be scraped. The Prometheus Pushgateway exists to allow ephemeral and batch jobs to expose their metrics to Prometheus. S…...

Rust Web开发常用库

本集合中所有库都是在开源项目中广泛使用且在2024年积极维护的库,排名靠前的库是当前使用比较广泛的,不全面但够用 Rust异步运行时 tokio:异步运行时 async_std:与标准库兼容性较强的运行时 monoio:字节开源 smol…...

ios内购支付-支付宝APP支付提现

文章目录 前言一、IOS内购支付(ios订单生成自己写逻辑即可)1.支付回调票据校验controller1.支付回调票据校验server 二、安卓APP支付宝支付1.生成订单返回支付宝字符串(用于app拉起支付宝,这里用的是证书模式)2.生成订…...

新课发布|鸿蒙HarmonyOS Next商城APP应用开发实战

2024年年初,鸿蒙HarmonyOS Next星河版强势发布,随着鸿蒙系统的普及和应用场景的拓展,市场需求将持续增加。鸿蒙系统已经应用于华为的智能手机、平板电脑、智能家居等多个领域,并有望在未来拓展到智能汽车、物联网等更多领域。这为…...

基于Java,SpringBoot,Vue智慧校园健康驿站体检论坛请假管理系统

摘要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差&#xf…...

【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月平均气温栅格数据,该数据来源于国家青藏高原科学数据中心。为方便大家使用,我们还基于上述平均气温栅格数据将数据处理为Shp和Excel格式的省市县三级逐月平均气温数据(可查看之前的文章获悉详情&#…...

c#代码介绍23种设计模式_16迭代器模式

目录 1、迭代器模式的介绍 2、迭代器模式的定义 3、迭代器模式的结构 4、代器模式角色组成 5、迭代器实现 6、迭代器模式的适用场景 7、迭代器模式的优缺点 8、.NET中迭代器模式的应用 9、实现思路 1、迭代器模式的介绍 迭代器是针对集合对象而生的,对于集合对象而言…...

408算法题leetcode--第23天

236. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先\思路:递归,如注释时间和空间:O(n) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) …...

帝国CMS系统开启https后,无法登陆后台的原因和解决方法

今天本地配置好了帝国CMS7.5,传去服务器后,使用http访问一切正常。但是当开启了https(SSL)后,后台竟然无法登陆进去了。 输入账号密码后,点击登陆,跳转到/e/admin/ecmsadmin.php就变成页面一片…...

根据视频id查询播放量

声明:文章仅用于学习交流,如有侵权请联系删除 如何根据视频ID查询视频的播放数量 在数字化时代,视频内容的消费已成为人们日常生活的重要组成部分。无论是社交媒体平台上的短视频,还是视频分享网站上的长视频,了解视频的播放数量…...

初始爬虫11

1.斗鱼selenium爬取 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By import timeclass Douyu(object):def __init__(self):self.url https://www.douyu.com/directory/allself.driver webdriver.Chrome()self.driver…...

SSY20241002提高组T4题解__纯数论

题面 题目描述 有一天 p e o p 1 e peop1e peop1e 学长梦到了一个丑陋的式子: ∑ i 1 n ( ∑ m 1 R F m ) ! i ! ∑ l 0 i ∑ j 0 ∑ t 1 R F t { K i − l } l ! { i ∑ w 1 R F w − j } j ! \sum_{i1}^n (\sum_{m1}^R F_m)!\times i!\times \sum_{l…...

Python:lambda 函数详解 以及使用

一、lambda 语法 lambda 函数的语法只包含一个语句,表现形式如下: lambda [arg1 [,arg2,.....argn]]:expression 其中,lambda 是 Python 预留的关键字,[arg…] 和 expression 由用户自定义。 具体如下: [arg…] 是参数列表&#…...

【C++】空指针和野指针

文章目录 1.空指针2.野指针总结 1.空指针 概念:指针变量指向内存中编号为0的空间。 用途:初始化指针变量。 注意:空指针指向的内存是不可以访问的。 示例: int main(){//指针变量p指向内存地址编号为0的空间int *PNULL&#…...

大模型提示词

纯输入版提示工程词 输出一个九九乘法口诀表 当然可以!以下是九九乘法口诀表: 1 x 1 1 1 x 2 2 2 x 2 4 1 x 3 3 2 x 3 6 3 x 3 9 1 x 4 4 2 x 4 8 3 x 4 12 4 x 4 16 1 x 5 5 2 x 5 10 3 x 5 15 4 x 5 20 5 …...

在线css像素px到Em的转换器

具体请前往:在线Px转Em工具--将绝对像素(px)长度单位转换为相对长度em...

回溯算法解决排列组合及子集问题

216. 组合总和 III39. 组合总和40. 组合总和 II46. 全排列47. 全排列 II77. 组合 78. 子集 90. 子集 II 以上是力扣设计相关问题的题目。排列组合还是子集问题无非就是从序列 nums 中以给定规则取若干元素,主要有以下几类: 元素无重不可复选&#xff0…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...