配置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

致谢

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

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

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: /etc/docker/daemon.json是Docker守护进程配置文件,用于配置Docker守护进程的各种参数和选项。该文件包含一个JSON对象,其中包含各种键值对,用于配置Docker守护进程的行为。例如,可以使用该文件配置Docker守护进程的存储驱动程序、网络设置、日志记录等。在修改该文件后,需要重新启动Docker守护进程才能使更改生效。 ### 回答2: Docker是一个开源的容器化平台,被广泛应用于企业级应用开发、测试和部署等方面。为了更好地管理Docker配置,我们需要了解Docker的一些核心配置文件,其中之一就是 /etc/docker/daemon.json。该文件通常用于配置Docker daemon的默认参数和选项。 1. 什么是/etc/docker/daemon.json配置文件 Docker daemon是Docker引擎的核心组件,负责Docker容器和映像的管理和交互。/etc/docker/daemon.json配置文件主要用于配置Docker daemon的运行时参数和选项。该文件的默认位置是 /etc/docker/daemon.json,但是在某些Linux发行版上也可以是/etc/docker/daemon.conf。 2. 配置文件内容及常用参数说明 在docker.json文件中,可以配置Docker daemon的各种参数和选项,包括: ① 日志级别:通过设置日志级别,Docker daemon可以输出更详细的日志信息,有助于故障排查和错误定位。 ② 存储驱动:Docker支持多种存储驱动,包括AUFS、Overlay2、btrfs、ZFS等。可以根据应用场景和硬件条件选择最合适的存储驱动。 ③ 网络配置Docker支持多种网络类型,包括桥接网络、主机网络、覆盖网络等。可以根据应用需求选择最合适的网络类型。 ④ 镜像缓存:Docker支持镜像缓存,可以加速镜像的拉取和推送。可以通过配置缓存大小和清除规则等参数来优化镜像缓存性能。 ⑤ 版本信息:可以通过配置版本信息,来控制Docker daemon的运行环境和能力,增强应用的安全性和稳定性。 以上是常用的几种配置项,还有其他参数可以根据需要进行配置。 3. 配置文件的编写方法和注意事项 在编辑/etc/docker/daemon.json配置文件时,需要注意以下几点: ① 多个配置参数之间的分隔符为英文逗号(,)。 ② 参数名和参数值之间必须用英文冒号(:)分隔。 ③ 参数值可以是数组、对象等。 ④ 配置文件支持注释,在一个行开头加上#符号即可。 通过理解和应用/etc/docker/daemon.json配置文件,可以更好地配置Docker daemon,提供更优秀的应用体验和管理效率。同时,根据具体的应用需求和操作系统特性,可以个性化定制Docker daemon的参数和选项,满足复杂的应用场景和高性能的需求。 ### 回答3: /etc/docker/daemon.json是Docker守护进程配置文件,它包含了一些参数和配置项,可以影响Docker容器、镜像以及守护进程的行为。 该文件一般由系统管理员或Docker运维人员进行编辑和配置,以下是该文件中一些常见的配置选项: 1. registry-mirrors: 配置Docker镜像加速器的地址,可以提高镜像的下载速度。 2. storage-driver: 配置Docker容器的数据存储驱动程序,例如overlay2、aufs等。 3. max-concurrent-downloads: 配置Docker容器镜像下载的最大并发数。 4. log-driver: 配置Docker容器日志的驱动程序,例如syslog、json-file等。 5. log-opts: 配置Docker容器日志驱动程序的选项参数,例如max-size、max-file等。 另外,在/etc/docker/daemon.json文件中还可以配置Docker守护进程的网络设置、安全性设置、设置默认的运行时、启用swarm模式等等。这些选项的作用和使用方法可以在Docker官方文档中查看。 需要注意的是,在对/etc/docker/daemon.json文件进行编辑和修改之后,需要重启Docker守护进程才能使配置项生效。可以使用以下命令重启Docker守护进程: sudo systemctl restart docker 总之,/etc/docker/daemon.json是一个非常重要的配置文件,通过对其中的配置项的修改,可以对Docker容器、镜像以及守护进程进行得到精细的控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李学不完

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值