【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博客】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/886270.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网页前端开发之Javascript入门篇(4/9):循环控制

Javascript循环控制 什么是循环控制? 答:其概念跟 Python教程 介绍的一样,只是语法上有所变化。 参考流程图如下: 其对应语法: var i 0; // 设置起始值 var minutes 15; // 设置结束值(15分钟…

VMware Aria Operations for Networks 6.13 发布,新增功能概览

VMware Aria Operations for Networks 6.13 - 网络和应用监控工具 请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-networks/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org VMware Aria Oper…

Golang | Leetcode Golang题解之第440题字典序的第K小数字

题目&#xff1a; 题解&#xff1a; func getSteps(cur, n int) (steps int) {first, last : cur, curfor first < n {steps min(last, n) - first 1first * 10last last*10 9}return }func findKthNumber(n, k int) int {cur : 1k--for k > 0 {steps : getSteps(cu…

Llama 系列简介与 Llama3 预训练模型推理

1. Llama 系列简介 1.1 Llama1 由 Meta AI 发布&#xff0c;包含 7B、13B、33B 和 65B 四种参数规模的开源基座语言模型 数据集&#xff1a;模型训练数据集使用的都是开源的数据集&#xff0c;总共 1.4T token 模型结构&#xff1a;原始的 Transformer 由编码器&#xff08…

C++入门基础 (超详解)

文章目录 前言1. C关键字2. C的第一个程序3. 命名空间3.1 namespace的定义3.2 命名空间的嵌套3.3 命名空间使用3.4 查找优先级总结 4. C输入和输出4.1 标准输入输出 (iostream库)4.2 文件输入输出 (fstream库)4.3 字符串流 (sstream库)4.4 C格式化输出4.5 std::endl和\n的区别 …

56 门控循环单元(GRU)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录门控循环单元&#xff08;GRU&#xff09;门控隐状态重置门和更新门候选隐状态隐状态 从零开始实现初始化模型参数定义模型训练与预测 简洁实现小结练习 门控循环单元&#xff08;GRU&#xff09; 之前我们讨论了如何在循环神经网络中计算梯…

生信初学者教程(二十三):REF+SVM筛选候选标记物

文章目录 介绍加载R包导入数据准备数据机器学习特征筛选数据分割基础模型Recursive Feature Elimination特征筛选调参最终分类模型测试集验证标记基因输出结果总结介绍 采用了REF(Recursive Feature Elimination) 结合 SVM(Support Vector Machine) 的方法,对差异基因(参…

探索未来:hbmqtt,Python中的AI驱动MQTT

文章目录 **探索未来&#xff1a;hbmqtt&#xff0c;Python中的AI驱动MQTT**1. 背景介绍2. hbmqtt是什么&#xff1f;3. 安装hbmqtt4. 简单的库函数使用方法4.1 连接到MQTT服务器4.2 发布消息4.3 订阅主题4.4 接收消息4.5 断开连接 5. 应用场景示例5.1 智能家居控制5.2 环境监测…

react-问卷星项目(4)

项目实战 使用CSS 尽量不要使用内联CSS 内联style代码多&#xff0c;性能差&#xff0c;扩展性差外链css文件可复用代码&#xff0c;可单独缓存文件 元素内联style 和HTMl元素的style相似必须用JS写法&#xff0c;不能是字符串&#xff0c;里面必须是对象 <span style…

实现epoll事件的两种模型(ET/LT)、epoll反应堆模型

前置知识&#xff1a; 多进程/线程并发服务器、多路I/O转接服务器的简单实现-CSDN博客 1. 事件模型 EPOLL事件有两种模型&#xff1a; Edge Triggered (ET) 边缘触发只有数据到来才触发&#xff0c;不管缓存区中是否还有数据。Level Triggered (LT) 水平触发只要有数据都会…

C++基类构造器的自动调用

C基类构造器的自动调用 虽然基类的构造器和解构器不会被派生类继承&#xff0c;但它们会被派生类的构造器和解构器自动调用&#xff0c;今天我们用代码实证一下。 验证代码 源代码&#xff0c;仔细看注释内容&#xff1a; D:\YcjWork\CppTour>vim c2004.cpp #include &l…

Ubuntu下安装Zookeeper集群

Zookeeper集群是一个开源的分布式协调服务系统&#xff0c;它由Apache软件基金会维护&#xff0c;旨在为分布式应用提供一致性和可靠性的服务。 在Zookeeper集群中&#xff0c;服务器可以扮演三种角色——领导者&#xff08;Leader&#xff09;、跟随者&#xff08;Follower&a…

如何使用ssm实现基于HTML的中国传统面食介绍网站的搭建+vue

TOC ssm758基于HTML的中国传统面食介绍网站的搭建vue 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔…

Python和C++混淆矩阵地理学医学物理学视觉语言模型和算法模型评估工具

&#x1f3af;要点 优化损失函数评估指标海岸线检测算法评估遥感视觉表征和文本增强乳腺癌预测模型算法液体中闪烁光和切伦科夫光分离多标签分类任务性能评估有向无环图、多路径标记和非强制叶节点预测二元分类评估特征归因可信性评估马修斯相关系数对比其他准确度 Python桑…

数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall

数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall 数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall 数据量&#xff1a;3k 想要进一步了解&#xff0c;请联系。 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&a…

Python Tips6 基于数据库和钉钉机器人的通知

说明 起因是我第一版quant程序的短信通知失效了。最初认为短信是比较即时且比较醒目的通知方式&#xff0c;现在看来完全不行。 列举三个主要问题&#xff1a; 1 延时。在早先还能收到消息的时候&#xff0c;迟滞就很严重&#xff0c;几分钟都算短的。2 完全丢失。我手机没有…

Mac 电脑配置yolov8运行环境实现目标追踪、计数、画出轨迹、多线程

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 &#x1f4d9; Mac 电脑 配置 yolov8 环境&#x1f4d9; 代码运行推理测试模型训…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-27

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-27 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-27目录1. VisScience: An Extensive Benchmark for Evaluating K12 Educational Multi-modal Scientific Reasoning VisScience:…

kubeadm部署k8s集群,版本1.23.6;并设置calico网络BGP模式通信,版本v3.25--未完待续

1.集群环境创建 三台虚拟机&#xff0c;一台master节点&#xff0c;两台node节点 (根据官网我们知道k8s 1.24版本之后就需要额外地安装cri-dockerd作为桥接才能使用Docker Egine。经过尝试1.24后的版本麻烦事很多&#xff0c;所以此处我们选择1.23.6版本) 虚拟机环境创建参考…

Webstorm 中对 Node.js 后端项目进行断点调试

首先&#xff0c;肯定需要有一个启动服务器的命令脚本。 然后&#xff0c;写一个 debug 的配置&#xff1a; 然后&#xff0c;debug 模式 启动项目和 启动调试服务&#xff1a; 最后&#xff0c;发送请求&#xff0c;即可调试&#xff1a; 这几个关键按钮含义&#xff1a; 重启…