配置Docker对象与管理守护进程

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 

本章节的快速目录导航: 

一、配置Docker对象

1.1、Docker对象的标记

1.2、格式化命令和日志的输出

二、示例:

2.1、管理Docker对象的标记

2.2、删除不用的 Docker 对象

三、配置和管理 Docker 守护进程

3.1、Docker 守护进程的启动

3.2、 Docker 守护进程的配置方式

3.3、解决 daemon.json 文件和启动脚本之间的冲突

3.4、Docker 守护进程目录

四、示例

4.1、检查Docker是否在运行

4.2、从 Docker 守护进程获取实时事件

4.3、查看 Docker 守护进程日志

4.4、开启 Docker 守护进程的调试模式

4.5、自定义 Docker 守护进程选项

4.6、为 Docker 守护进程配置 HTTP/HTTPS 代理

致谢


一、配置Docker对象

使用Docker的主要工作是创建和使用各类对象。如镜像、容器、网络、卷、插件等

1.1、Docker对象的标记

Docker标记是一种用于为Docker对象(如镜像、容器等)添加元数据的机制

  • 标记用途:组织镜像、记录许可信息、注释关系、执行业务或应用操作
  • 标记格式:键值对,以字符串形式存储,每个键在对象中唯一
  • 键规则:可含句点、连字符、字母和数字
  • 值规则:任何可序列化为字符串的数据类型,如 JSON、XML、CSV 或 YAML
  • 序列化:需将值转换为字符串,例如使用 JSON.stringify()
  • 查询限制:Docker 不反序列化标记值,查询时不能使用嵌套结构,可能需第三方工具

1.2、格式化命令和日志的输出

Docker使用Go模板和一系列函数来管理命令和日志的输出格式

(1)join: 连接字符串列表为单个字符串,用指定分隔符

 docker inspect --format='{{join .Args "" 1}}' container

(2) json: 将元素编码为 JSON 字符串

 docker inspect --format='{{json . Mounts }}' container

(3) lower: 将字符串转换为小写

 docker inspect --format='{{lower .Name}}' container

(4)split: 将字符串按分隔符切分为列表

 docker inspect --format='{{split (join .Names "/") "/"}}' container

(5)title: 将字符串的每个单词首字母转为大写

 docker inspect --format='{{title .Name}}' container

(6)upper: 将字符串转换为大写

 docker inspect --format='{{upper .Name}}' container

(7)println: 使每个输出值占一行

 docker inspect --format='{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}' container
 ​
 # 如果要知道可被输出的内容,可以以JSON格式显示全部内容
 docker container ls --format='{{json.}}'

二、示例:

2.1、管理Docker对象的标记

  • 标记机制:Docker 对象如镜像、容器等可以添加标记,这些标记在对象生命周期内通常是静态的,需要重新创建对象才能更改。

  • 动态更新:Swarm 集群节点和服务上的标记支持动态更新。

 # 为容器添加标记:
 [root@docker ~]# docker run -d --label test-redis --name redis redis
 d75e715b2...
 ​
 # 按标记过滤容器列表:
 root@docker ~]# docker ps --filter label=test-redis
 CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS      NAMES
 d75e715b27d8   redis     "docker-entrypoint.s…"   22 seconds ago   Up 20 seconds   6379/tcp   redis

2.2、删除不用的 Docker 对象

  • 垃圾回收:Docker使用保守方法清理未使用的对象,如镜像、容器、卷和网络
  • Prune命令:提供了prune命令来清理这些对象
  • 系统清理:使用docker system prune一次性清理多种类型的对象
 # 清理镜像、容器和网络:
 [root@docker ~]# docker system prune
 WARNING! This will remove:
   - all stopped containers          # 所有停止的容器
   - all networks not used by at least one container # 未被任何容器使用的网络
   - all dangling images             # 所有虚悬的镜像
   - unused build cache              # 所有构建缓存
 Are you sure you want to continue? [y/N]    # 输入y键确认执行
 ​
 # 在新版本中清理卷:
 docker system prune --volumes
 ​
 # 强制删除无提示
 docker system prune -f

三、配置和管理 Docker 守护进程

Docker 守护进程(dockerd)是 Docker 的后台应用程序,可以通过dockerd命令进行配置和管理

3.1、Docker 守护进程的启动

Docker 守护进程通常由系统工具自动启动,简化了系统重启时 Docker 的启动过程

 # 启动Docker:
 systemctl start docker
 ​
 # 重启Docker:
 systemctl restart docker
 ​
 # 停止Docker:
 systemctl stop docker
 ​
 # 设置开机启动:
 systemctl enable docker
 ​
 # 禁用开机启动:
 systemctl disable docker

如果需要手动启动或测试,可以使用 dockerd命令:

 dockerd

3.2、 Docker 守护进程的配置方式

Docker 守护进程可以使用以下两种方式进行配置:

3.2.1、使用 JSON 配置文件

  • Linux 系统配置文件位置/etc/docker/daemon.json

  • Windows 系统配置文件位置C:\ProgramData\docker\config\daemon.json

 {
   "debug": true,
   "tls": true,
   "tlscert": "/var/docker/server.pem",
   "tlskey": "/var/docker/serverkey.pem",
   "hosts": ["tcp://192.168.199.53:2376"]
 }

采用这个配置,Docker守护进程将以调试模式运行,其使用TLS安全机制,在2376监听路由到IP地址192.168.199.53的流量

3.2.2、使用选项手动启动 Docker 守护进程

 dockerd --debug \
   --tls=true \
   --tlscert=/var/docker/server.pem \
   --tlskey=/var/docker/serverkey.pem \
   --host tcp://192.168.199.53:2376

3.3、解决 daemon.json 文件和启动脚本之间的冲突

如果daemon.json配置文件启动脚本中定义了相同的选项,会导致 Docker 启动失败。解决冲突需要调整相关选项或配置文件。

3.4、Docker 守护进程目录

  • Linux 默认目录/var/lib/docker
  • Windows 默认目录C:\ProgramData\docker

四、示例

4.1、检查Docker是否在运行

可以通过多种方式检查 Docker 是否在运行:

  • 使用docker info命令,这是跨操作系统的方法。
  • 使用系统工具,如systemctl is-active dockersystemctl status dockerservice docker status
  • 使用pstop 等 Linux 命令在进程列表中检查 dockerd进程

4.2、从 Docker 守护进程获取实时事件

使用docker events命令查看 Docker服务器端的实时事件信息:

 docker events [选项]
  • -f 选项用于过滤事件
  • --since选项显示自某个时间戳开始的所有事件
  • --until选项显示截至指定时间的所有事件

演示:(1)在一个终端窗口执行以下命令监听事件:

 [root@docker ~]# docker events

(2)打开另一个终端,先启动容器然后停止该容器

 [root@docker ~]# docker create --name test alpine:latest top
 ...
 0b78a4e23fe021d0f2e32d534cd564a2d62ee23e5ce134919ce3d9faf31b9d9d
 [root@docker ~]# docker start test
 test
 [root@docker ~]# docker stop test
 test

(3)切换回前面的终端窗口,发现显示上述操作的详细事件:

 [root@docker ~]# docker events
 2024-05-11T22:37:58.519619364+08:00 image pull alpine:latest (name=alpine)
 2024-05-11T22:37:58.548749579+08:00 container create
 ...

(4)按下Ctrl+C组合退出docker events命令

4.3、查看 Docker 守护进程日志

Docker 守护进程日志有助于诊断问题:

  • 在使用 systemctl的 inux 系统上,使用journalctl -u docker.service查看日志。

     [root@docker ~]# journalctl -u docker.service
     -- Logs begin at Thu 2024-05-09 10:42:29 CST, end at Sat 2024-05-11 22:40:54 CST. --
     May 09 10:42:36 docker systemd[1]: Starting Docker Application Container Engine...
     May 09 10:42:39 docker dockerd[1126]: time="2024-05-09T10:42:39.326030877+08:00" level=info msg="Starting up"
     ...
  • 在其他操作系统上,查看相应的日志文件,例如/var/log/messages/var/log/upstart/docker.log

如果 Docker 守护进程没有响应,可以发送SIGUSR1信号来记录堆栈跟踪:

 kill -SIGUSR1 $(pidof dockerd)

4.4、开启 Docker 守护进程的调试模式

启用调试模式有两种方法:

  • daemon.json文件中设置 "debug": true
  • 发送SIGHUP信号到守护进程,使其重新加载配置:

 kill -SIGHUP $(pidof dockerd)

或者直接使用 -D选项手动重启Docker守护进程。

 [root@docker ~]# systemctl stop docker
 [root@docker ~]# dockerd -D

4.5、自定义 Docker 守护进程选项

使用daemon.json文件配置守护进程选项,例如:

 {
   "data-root": "/mnt/docker-data",
   "storage-driver": "overlay"
 }

data-root选项设置的是运行时目录,即Docker镜像、容器和卷所使用的磁盘空间

4.6、为 Docker 守护进程配置 HTTP/HTTPS 代理

配置 HTTP/HTTPS 代理:

(1)创建etc/systemd/system/docker.service.d/http-proxy.conf文件:

 mkdir -p /etc/systemd/system/docker.service.d

(2) 添加环境变量定义:

 [Service]
 Environment="HTTP_PROXY=http://proxy.example.com:80"

(3) 重新加载 systemd 配置并重启 Docker:

 systemctl daemon-reload
 systemctl restart docker

(4)验证配置:

 systemctl show --property=Environment docker

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。

学习永无止境,让我们共同进步!!

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

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

相关文章

大模型微调之 在亚马逊AWS上实战LlaMA案例(十)

大模型微调之 在亚马逊AWS上实战LlaMA案例(十) 训练数据集格式 SageMaker JumpStart 目前支持域适应格式和指令调整格式的数据集。在本节中,我们指定两种格式的示例数据集。有关更多详细信息,请参阅附录中的数据集格式化部分。 …

ECharts系列:基本使用及配置项

目录 基本使用 配置项的写法与位置 配置项option包含属性 各个配置项属性大全 基本使用 在阅读本篇文章时请参考ECharts官网地址中的内容配合了解 首先我们知道ECharts图表中有许多类型,如折线图、柱状图、饼形图等,下面我以折线图为例讲解ECharts图…

户籍管理系统的设计与实现

【免费】户籍管理系统的设计与实现.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89296790 ​​​​​​​户籍管理系统的设计与实现 摘 要 当今社会人们生活质量越来越高,人们对生活品质的追求不断提升,对于孩子求学,变更住…

【一站式学会Kotlin】第四节默认参数和具名参数、unit返回值类型

作者介绍: 百度资深Android工程师T6,在百度任职7年半。 目前:成立赵小灰代码工作室,欢迎大家找我交流Android、微信小程序、鸿蒙项目。文章底部,csdn有为我插入微信的联络方式,欢迎大家联络我。 一&#x…

C++笔试强训day18

目录 1.压缩字符串 2.chika和蜜柑 3.01背包 1.压缩字符串 链接 注意细节: 1.数量为一个时不用输出个数 2.当数量超过 9 时,需要逐个拿出 n 的位数,如153次,需要拿出1、5、3三个数 详细代码: class Solution { publ…

Apache Sqoop:高效数据传输工具搭建与使用教程

目录 引言一、环境准备二、安装sqoop下载sqoop包解压文件 三、配置Sqoop下载mysql驱动拷贝hive的归档文件配置环境变量修改sqoop-env.sh配置文件替换版本的commons-lang的jar包 验证Sqoop安装查看Sqoop版本测试Sqoop连接MySQL数据库是否成功查看数据库查看数据表去除警告信息 四…

【18-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

静态分析-RIPS-源码解析记录-03

既然有源码可以debug,那么直接跑测试用例,来跟踪处理逻辑感觉比直接看代码理逻辑更快一些,尤其是涉及到了扫描阶段,不然不容易弄清某刻某个变量的取值。 对于所有漏洞而言,都是由sink点到source点检测是否有过滤函数&…

毕业论文凑字数——关于IVR自动语音应答交互式电话导航自动总机等等概念的一些剖析

目录 IVR毕业论文的讨巧思路IVR自动语音应答IVR的使用流程IVR的各种应用IVR的基本配置 一个小朋友的毕业论文要凑字数,所以推荐她讲一讲IVR,因为IVR可以翻译的名字很多,比如交互式语音应答,自动语音应答,自动语音服务&…

创新指南 | 生成式AI如何引领企业创新未来?

2023年麦肯锡全球数字战略调查了1000多名受访者,发现:建立创新文化的组织与它们应用包括生成式AI在内的最新数字技术提高产出的能力之间有着惊人的强关联。 本文探讨了顶尖创新企业采取的五项行动,使它们与同行之间拉开距离,并在使…

WordPress原创插件:超链接点击访问统计

WordPress原创插件:超链接点击访问统计 https://download.csdn.net/download/huayula/89296775

工业机器人应用实践之玻璃涂胶(篇三)

工业机器人 接上篇文章,浅谈一下实践应用,具体以玻璃涂胶为例: 了解工业机器人在玻璃涂胶领域的应用 认识工具坐标系的标定方法 掌握计时指令的应用 掌握人机交互指令的应用 掌握等待类指令用法(WaitDI、WaitUnitl 等&#xff0…

springboot(3.2.5)初步集成MinIO(8.5.9)开发记录

springboot初步集成MinIO开发记录 说明一:引入maven依赖二:手动注入minioClient三:创建service类四:测试打印连接信息五:时区转化工具类六:常用操作演示 说明 这里只是作者开发的记录,已备将来…

理解导数(x^n求导后nx^n-1)

以下都是为了方便理解 微小量是 t M(x)是一个函数 M 在 x 处的斜率 M 在 x 处的导数 垂直距离 平移距离 M ( x t ) − M ( x ) ( x t ) − x M在x处的斜率 M在x处的导数 \dfrac{垂直距离}{平移距离} \dfrac{M\left( xt\right) -M\left( x\right) }{(x t) -x} M在x处的斜…

数组二叉树-华为OD

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法,所以会发布一些解题思路,希望大家多指教 一、题目描述 二叉树也可以用数组来存储,给定一个数组&#xff…

Qt之常用控件一

Widget常见属性及其作用 属性作用enabled 设置控件是否可使⽤. true 表⽰可⽤, false 表⽰禁⽤ geometry 位置和尺⼨. 包含 x, y, width, height 四个部分. 其中坐标是以⽗元素为参考进⾏设置的. windowTitle 设置 widget 标题 windowIcon 设置 widget 图标 windowOpa…

安装SQL Server详细教程_sql server安装教程

一,SQL Server数据库安装 1.首先,下载安装程序 (1)从网盘下载安装exe 点击此处直接下载 (2)从官网下载安装exe文件 在官网选择Developer进行下载 2.开始安装 双击安装程序,开始安装 这里直…

数据的均匀化分割算法(网格划分法、四叉树法(含C++代码))

数据的均匀化分割主要是指在分割过程中尽可能均匀地将数据点分布在各个子区域中,以保持数据分布的平衡和优化数据结构的性能。以下是几种可以实现数据均匀化分割的方法: 一. 网格划分法 1. 基本概念 虽然传统的网格划分法不是动态调整的,但通…

2024年电工杯数学建模A题思路 中国电机工程学会杯建模思路分析

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

【高校科研前沿】北师大陈晋教授团队在遥感顶刊发表最新成果:ClearSCD模型:在高空间分辨率遥感影像中综合利用语义和变化关系进行语义变化检测

01文章简介 论文名称:The ClearSCD model: Comprehensively leveraging semantics and change relationships for semantic change detection in high spatial resolution remote sensing imagery(ClearSCD模型:在高空间分辨率遥感影像中综合…